나그네소
Goldilocks Docker 가이드 본문
이 문서는 가상 화 개요 및 Docker Image 이용하여 Goldilocks Container 생성 및 사용 방법을
기술 한다.
가상화 개요
- 온프레미스
“ 저희 데이터베이스는 온프레미스 환경에서 성능시험을 해보면, 초당 약 10 만 TPS 이상의 Throughput 을 낼 수 있습니다. ” - 베이메탈
“저희 데이터베이스는 베어메탈 환경에서 성능시험을 해보면, 초당 약 10 만 TPS 이상의 Throughput 을 낼 수 있습니다.”
온프레미스 ≒ 베어메탈
베이메탈은 가상 환경으로 구성 되지만 실제 물리적 장비를 이용 하는 것이기에 온프레미스 환경과 동일하다
생각 하면 된다. - 가상 머신(Virtual machine) / 하이버 바이져
- vCPU /vCORE
- 16 core 물리 장비 한대로 8 vcore VM 서버 24 대 할당 가능.
하이퍼바이저에 의해 물리 core 당 vcore 수가 결정 됨. - 16 core * Hypervisor = 32Core(물리코어)
32 Core * vm 6 Core(1 logical core) = 192 Core 할당 가능
ex) 192 / 24대(VM Instance) = 8 Core (VM당 8core씩 할당 가능)
- 가상화 운영 환경 종류
- 가상 머신 (Virutal Machine)
하이퍼바이저를 이용하여 하드웨어 스택 전체를 가상화 - 컨테이너 (Container)
운영체제 수준에서 프로세서를 컨테이너 형태로 격리화하여 가상화.
- 하이퍼바이저
물리적으로 한 대의 베어메탈 위에서 다수의 가상 베어메탈을 만들 수 있는 일련의 기술. VMM
(Virtual Machine Manager) - 하이퍼바이저 종류
- TYPE1 : Bare Metal Type Hypervisor
- TYPE2 : Hosted Hypervisor
- 하이퍼바이저 Type1 다시 분류(베어메탈)
- 반 가상화(Para-Virutalization)
- 전 가상화(Full Virtualization)
- Hyperversion(TYPE1)
- 호스트 하드웨어에 하이퍼바이져 설치( 가상화 설치) windows or linux 설치 하듯이 아무것도 설치 되는 않은 컴퓨터에 hypervisor 설치.
- 하드웨어를 제어하는 역할과 VM등을 관리 하는 역할을 Hypervisor가 담당 한다.
- Type1 Hypervisor 종류
젠(Xen), KVM(Kernel-based Virtual Machine), Citrix의 XenServer
XenSErver 설치 화면
Win 10에 MS Hyper-V 설치 OS 설치 시 기본으로 제공되어 옵션을 통해 활성화
- Hypervision (TYPE2)
- 호스트 OS 위에 설치되는 방식의 Hypervisor
- 기존의 컴퓨터 환경을 그대로 이용하기 방식이므로 설치 및 구성이 편리
- Guest OS가 3번째 수준에서 실행(TYPE1은 2번째) // Host OS-Hypervisor-Guest OS
- BareMetal(TYPE1)보다 한단계 더 거치므로 느림(Public 가상화)
- HyperVisor(TYPE2) 구조
- VM ware Workstation , VM ware Player
- Virtual Box
Virtaul Box Architecture
- 대표적인 오픈 소스 Hypervisor - XEN, KVM
- OpenStack Nova의 Hypervisor Dirver
- LIVBIRT
ibvirt는 플랫폼 가상화 관리를위한 오픈 소스 API, 데몬 및 관리 도구입니다. KVM, Xen, VMware ESXi, QEMU 및 기타 가상화기술을 관리하는 데 사용할 수 있습니다. -
OpenStack Nova 와 Hypervisor 간의 Interface 는 libvirt 를 사용하거나, Hypervisor 에서 제공하는 Driver API 를 사용해야 함.
-
위와 같이 Group 으로 나눈 것으로 보아 libvirt + KVM 을 가장 주력으로 사용. (Openstack)
Docker & Container
- Container 단점
- Linux 에서만 동작
- Container에 다른 OS 설치 불가 ( Linux의 모든 배포판은 설치 가능 windows x)
- 모든 컨데이너가 같은 커널 공유
- 보안 검증이 안된 이미지를 다운받아 사용 할 수 있음
- Host OS의 보안 취약 성이 모든 컨테이너에 미칠 수 있음
- Host OS dependent
- Container별 Kernel 구성 불가능
- 보안 취약
- Docker = Container ?
Docker는 LXC 기반으로 사용자가 Container를 쉽게 주무를 수 있게 도와주는 관리 도구 이지(Llinux Container, Control Group, Namespace, AUFS등의 기술 사용) Docker가 Container 자체를 가리키는 것은 아니다.
- Docker API
- Docker 사용하는 기술
- Docker 사용 하는 기술
- LXC(Linux Container), libcontainer, runC
cgroups, namepsaces를 표준으로 정의해둔 OCI(open container initiative) 스펙을 구현한 컨테이너 기술의 구현. - LXC(Linux Container)
초기 Docker 에서 사용된 Linux 용 컨테이너 관리 기술. Namespaces, cgroups를 사용해 컨테이너를 생성, 관리 함. Linux 2.6.24에서 처음 발표 - Libcontainer
Docker Version 0.9 이후부터 Default로 사용.
Linux 플랫폼 의존적인 LXC를 대체하기 위해 Docker에서 만든 컨테이너 관련 기술.
Host OS 의존성을 제거해 다양한 플랫폼 지원(Red Hat, MS Windwos, etc) / Go 언어로 구현. - runC
컨테이너를 실행하는 런타임이며, CLI 툴 입니다.
runC는 container의 생성/실행 등을 위한 기본적인 기술이며 CLI 도구입니다. 즉, container의 조작을 위해 존재 한다고 생각하면 될 것 같습니다. runC는 Docker, containerd, Podman 및 CRI-O가있는 컨테이너의 기본 런타임으로 사용됩니다.
- Docker가 사용 하는 기술
시스템 상에서 동작중인 task들을 임의로 Group지어 제어 할 수 있는 기능. (cgroup 생성 -> task 연결 -> subsystem(각종 자원) 할당.- Resource limitation : 설정한 메모리 이상 사용하지 못하도록 보호
- Prioritization : 그룹에 따라 cpu 사용량 또는 디스크 I/O 분배
- Accounting : 자원 사용량 측정
- Control : 사용 중단, 체크 포인트 설정, 재 시작
- 컨테이너 컴퓨팅 자원을 제어 하는 기술
- 프로세스 집단의 자원(CPU, Memory, disk i/o, network, etc..) 관리 기능
- 2006년 Google에서 개발 시작
- Linux 2.6.24 이상 버전부터 지원
- 기능
- Namespace
- Clone() – 새로운 프로세스와 새로운 namespace 생성
- Unshare() – 존재하는 프로세스에 새로운 namespace 생성
- Setns() – 존재하는 namespace에 합류
- 컨테이너를 만들기 위한 프로세스 가상화 기술
- Hypervisor를 사용하지 않고 격리된 공간을 제공
- 구현 기술
- Namespace 종류
- Mount namespace(mount point, file system)
- Network namespace ( network interface, routing, etc …)
- UTS namespace (hostname, domain name)
- PID namespace ( process )
- IPC namespace ( IPC )
- User namespace (UID )
출처 : https://www.slideshare.net/rkawkxms/docker-container
- Docker Bianry & Process
- docker-current : 도커 데몬 프로세스로 command 실행
- dockerd-current : 도커 Engine 데몬
- docker-ctr-current : Container 데몬 프로세스의 debug, events 수신 등에 사용
- docker-containerd-current : Container 를 관리해주는 데몬
- docker-containerd-shim-current : Container 자체 (초기화 등 수행 후 Container 자체 가 됨)
- Docker 동작 구조
각각의 containers 디렉토리에 shim 거쳐 Container가 생성 된 것을 확인 할 수 있다.
- Image , Container
- Image Layer, Container Layer
- Docker Network
Docker 에서 지원 하는 Network - Bridge : Default
- Host
- Container
- None
- Network List 조회
- Docker Network(Bridge 모드)
Docker0 virtual interface : docker host를 설치하면 자동으로 생성
Docker() = virtual ethernet bridge( virtual switch )
Docker() 이외 원하는 bridge를 직접 생성하여 사용하고자 할 경우
- Docker Network(Bridge 모드)
- Docker Network ( Bridge 모드 )
- Docker Ntwork (Host 모드)
컨테이너가 Docker Bridge를 이용하지 않고 Host Network 스펙을 그대로 사용
컨테이너 와 컨테이너는 연결 못하는 건가?
$ docker run -d --name node-2-server --network host kimjeongchul/node-app-server
Container 내부 에서도 Host의 Process들이 Network Interface 사용하는 것처럼 사용 하면 됨.
- Docker Network (Container 모드)
컨테이너간 네트워크를 공유 한다.
tech9:/home/son2865] docker run --net=container:06454eb50456 -dit --name connect2 ubuntu
2b036806f58a57a377ea84a23a72f6578e2741a1e5f3230b2273d54adec1103d
Container 간의 network 공유 하여 사용 한다
Docker 설치
- docker 설치
- $> wget -qO - https://get.docker.com/ | sh
docker repository에서 docker를 받아와 설치 한다. - docker 기동
- docker start
$> service docker start - docker 실행 및 자동 실행 서비스 등록
$> systemctl enable docker.service //service 등록
$> systemctl start docker.service //docker start
$> sysctemctl status docker.service //docker service 확인. - 권한 부여
docker root에 설치 되어 있기 때문에 user에서 실행을 하려면 Group 권한을 주어야 한다.
$> usermod -aG docker sunje //확인 id - docker 설치 확인
$> docker version
Goldilocks 도커 이미지 다운로드(Standalone)
- Goldilocks에서 제공 하는 Docker Image는 Dockr Hub Site에서 pull로 다운 받아 사용 할 수 있다.
- Goldilocks Docker Image Download 받는법(standlaone version)
host disk 와 volumn을 공유 하지 않고 Goldilocks Database 자체가 생성 된 Docker Image로Image만 받아 기동만 하면 바로 사용 할 수 있다.
$> docker pull sunjesoft/standalone:21c_1_10_v_binary21c_1_10_v_binary: Pulling from sunjesoft/standalone
2d473b07cdd5: Pull complete
347a3b2242a6: Pull complete
9341ba4e4de9: Pull complete
3dd858060b15: Pull complete
ef1922fe4b8d: Pull complete
eb75017f0afa: Pull complete
27e01d205f6c: Pull complete
3b0264d8a24f: Pull complete
e81c7a12b7e6: Pull complete
f79a5ad59c5d: Pull complete
Goldilocks 도커 컨테이너 생성 및 실행(Standalone)
- Goldilocks 에서 제공 하는 Image 다운 받아 컨테이너를 실행 하는 방법이다.
- Goldilocks Docker Execute(standlaone version)
host disk 와 volumn을 공유 하지 않는 버젼으로 컨테이너를 실행 하면 바로 DB를 사용 할 수 있다.
$> docker run -it --rm --name goldilocks-0 -p 17101:10101 -p 27581:22581 --sysctl kernel.shmmax=50359959552 --sysctl kernel.shmmni=4096 --sysctl kernel.shmall=12294912 --sysctl kernel.sem="250 32000 100 128"--hostname goldilocks-0 -e TABLE_SPACE_SIZE=100M -e TEMP_TABLESPACE_SIZE=100M -e SERVICE_ACCOUNT=SA sunjesoft/standalone:21c_1_10_v_binary
------start:bashrc------
/home/sunje/goldilocks_home
/home/sunje/goldilocks_data/goldilocks/goldilocks-0
------end:bashrc--------
Copyright (C) 2010 SUNJESOFT Inc. All rights reserved.
Release 21c 21.1.10 revision(8656ab6)
Connected to an idle instance.
gSQL>
Startup success
Elapsed time: 44157.82100 ms
gSQL> db startup success !!!!
Copyright (C) 2010 SUNJESOFT Inc. All rights reserved.
Release 21c 21.1.10 revision(8656ab6)
Listener is started successfully.
Copyright (C) 2010 SUNJESOFT Inc. All rights reserved.
Release 21c 21.1.10 revision(8656ab6)
Listener process ID : 58
Listener configuration file : /home/sunje/goldilocks_data/goldilocks/goldilocks-0/conf/goldilocks.listener.conf
Unix Domain Path : /tmp/unix-glsnr.22581.0
TCP Listen Host : 0.0.0.0, Port : 22581
default C/S mode : Dedicated
Connection Timeout(second) : 100
Listener is running.
[STARTUP-SM] LOCAL OPEN PHASE - Goldilocks Containr 실행
$> docker exec -it goldilocks-0 bash
------start:bashrc------
/home/sunje/goldilocks_home
/home/sunje/goldilocks_data/goldilocks/goldilocks-0
------end:bashrc--------
goldilocks-0:/home/sunje]
goldilocks-0:/home/sunje]
goldilocks-0:/home/sunje] gst
Copyright (C) 2010 SUNJESOFT Inc. All rights reserved.
Release 21c 21.1.10 revision(8656ab6)
Connected to GOLDILOCKS Database.
gSQL> select * from t1;
C1
--
1
1 row selected.
Goldilocks 도커 이미지 다운로드(Cluster)
- Goldilocks에서 제공 하는 Docker Image는 Dockr Hub Site에서 pull로 다운 받아 사용 할 수 있다.
- Goldilocks Docker Image Download 받는법(Cluster version)
host disk 와 volumn을 공유 하지 않고 Goldilocks Database 자체가 생성 된 Docker Image로Cluster Docker Image만 받아 기동만 하면 바로 사용 할 수 있다.
$> docker pull sunjesoft/cluster:21c_1_10_G1N1_v_binary21c_1_10_G1N1_v_binary: Pulling from sunjesoft/cluster
2d473b07cdd5: Already exists
4de87e242d53: Already exists
99e30912b677: Already exists
48886335bafd: Already exists
c3502c69e489: Already exists
a6ae56625c76: Pull complete
b67f13ab199b: Pull complete
9303b6cbcb05: Pull complete
5ff4a7ff3eb2: Pull complete
b6d734b4a643: Pull complete
$> docker pull sunjesoft/cluster:21c_1_10_G1N2_v_binary
21c_1_10_G1N2_v_binary: Pulling from sunjesoft/cluster
2d473b07cdd5: Already exists
4de87e242d53: Already exists
99e30912b677: Already exists
48886335bafd: Already exists
c3502c69e489: Already exists
a6ae56625c76: Already exists
b67f13ab199b: Already exists
9303b6cbcb05: Already exists
5ff4a7ff3eb2: Already exists
967bc82385dd: Pull complete
Goldilocks 도커 컨테이너 생성 및 실행(Cluster)
- Goldilocks 에서 제공 하는 Image 다운 받아 컨테이너를 실행 하는 방법이다.(Cluster)
- Goldilokcs Cluster 제공 받기 위해서는 고정 IP를 사용 하여야 하기 때문에 아래 와 같은 Network 작업을 수행 한다.
$> docker network create --gateway 172.19.0.1 --subnet 172.19.0.0/21 mybridge$> docker network lsdocker-test.novalocal:/home/sunje/work/docker_cluster_no_volumn] docker network lsNETWORK ID NAME DRIVER SCOPEa59c8a462830 bridge bridge locale7ade4581582 host host local6cbfb6cd0047 mybridge bridge local4914990bb263 none null local$> docker inspect mybridge|grep -Ei "Subnet|Gateway""Subnet": "172.19.0.0/21","Gateway": "172.19.0.1"
-> container 안에서 172.19.IP 대역대를 사용 할 수 있다록 한다(컨테이너 Cluster IP 172.19망으로 고정되어 이씩 때문에)
$> docker pull sunjesoft/cluster:21c_1_10_G1N1_v_binary //docker hub image pull (g1n1)
$> docker pull sunjesoft/cluster:21c_1_10_G1N2_v_binary //docker hub image pull (g1n2) - Goldilocks Docker Execute(cluster version)
host disk 와 volumn을 공유 하지 않는 버젼으로 컨테이너를 실행 하면 바로 DB를 사용 할 수 있다.
$> docker run -it --rm --name goldilocks-1 --net mybridge --ip 172.19.0.102 -p 30101:10101 -p 42581:22581 --sysctl kernel.shmmax=50359959552 --sysctl kernel.shmmni=4096 --sysctl kernel.shmall=12294912 --sysctl kernel.sem="250 32000 100 128" --hostname goldilocks-1 sunjesoft/cluster:21c_1_10_G1N2_v_binary
$> docker run -it --rm --name goldilocks-0 --net mybridge --ip 172.19.0.101 -p 20101:10101 -p 32581:22581 --sysctl kernel.shmmax=50359959552 --sysctl kernel.shmmni=4096 --sysctl kernel.shmall=12294912 --sysctl kernel.sem="250 32000 100 128" --hostname goldilocks-0 -e CLUSTER_CHECK=0 -e MEMBER_NAME=G1N1 sunjesoft/cluster:21c_1_10_G1N1_v_binary - Goldilocks Containr 실행
$> docker exec -it goldilocks-0 bash
------start:bashrc------
/home/sunje/goldilocks_home
/home/sunje/goldilocks_data/goldilocks/goldilocks-0
------end:bashrc--------
goldilocks-0:/home/sunje]
goldilocks-0:/home/sunje]
goldilocks-0:/home/sunje] gsrt
bash: gsrt: command not found
goldilocks-0:/home/sunje] gst
Copyright (C) 2010 SUNJESOFT Inc. All rights reserved.
Release 21c 21.1.10 revision(8656ab6)
Connected to GOLDILOCKS Database.
gSQL> desc t1
COLUMN_NAME TYPE IS_NULLABLE
----------- ------------ -----------
C1 NUMBER(10,0) TRUE
gSQL> select * from t1;
C1
--
1
1 row selected.
Elapsed time: 0.19900 ms
gSQL> select * from x$instance;
VERSION STARTUP_TIME STATUS OS_USER_ID IS_CLUSTER LOCAL_GROUP_ID LOCAL_MEMBER_ID LOCAL_MEMBER_NAME LOCAL_MEMBER_POSITION
------------------------------------- -------------------------- ------ ---------- ---------- -------------- --------------- ----------------- ---------------------
Release 21c 21.1.10 revision(8656ab6) 2022-01-10 07:41:26.460110 OPEN 1000 TRUE 1 1 G1N1 0
Release 21c 21.1.10 revision(8656ab6) 2022-01-10 07:40:10.332635 OPEN 1000 TRUE 1 2 G1N2 1
2 rows selected.
Connected to GOLDILOCKS Database.
gSQL> select * from t1;
C1
--
1
1 row selected.
Goldilocks 도커 이미지 만들기(Standalone)
Goldilocks Docker File을 이용하여 Docker Image 생성 한다.
- Goldilocks Docker File를 Down 받는다.
son2865@sunjesoft.com 으로 요청 하면 전달. - Docker 파일 구성
- build 세부 내역
docker build -t $(NS)/$(IMAGE_NAME):$(VERSION) -f Dockerfile .
[Dockerfile]
FROM centos:7
# centos update
RUN yum update -y
RUN yum install -y net-tools whtich crontabs vim locales tzdata gdb
RUN useradd -m -s /bin/bash sunje
COPY *.sh /home/sunje/
COPY ./goldilocks/goldilocks_home /home/sunje/goldilocks_home
COPY ./goldilocks/goldilocks_data /home/sunje/goldilocks_data_create
RUN chown -R sunje:sunje /home/sunje/ \
&& mkdir -p /home/sunje/nfs_volumn \
&& mkdir -p /home/sunje/goldilocks_data \
&& chown -R sunje:sunje /home/sunje/nfs_volumn \
&& chown -R sunje:sunje /home/sunje/goldilocks_home \
&& chown -R sunje:sunje /home/sunje/goldilocks_data \
&& chmod 777 -R /home/sunje
USER root
RUN echo "root:root" | chpasswd
USER sunje
WORKDIR /home/sunje
ENV CREATE_TABLE_QUERY="CREATE TABLE TEST (C1 INT PRIMARY KEY)"
ENTRYPOINT ["/bin/bash"]
CMD ["./entrypoint.sh"]
- container os 및 계정 생성 후 entrypoint.sh shell 수행
- entrypoint.sh 에서 실제 DB 생성 및 Startup 처리 한다. - dockerenv.default
Docker File에서 사용 하는 환경 변수를 설정 한다.
#!/usr/bin/env
# docker image create
NS ?= sunjesoft
VERSION ?= 21c_1_10_v
VERSION_BINARY ?= 21c_1_10_v_binary
IMAGE_NAME ?= standalone
CONTAINER_NAME ?= goldilocks
CONTAINER_INSTANCE ?= 0
# docker run
PORTS = -p 17101:10101 -p 27581:22581
ENV = -e TABLE_SPACE_SIZE=100M -e TEMP_TABLESPACE_SIZE=100M -e SERVICE_ACCOUNT=SA
OPTION= --sysctl kernel.shmmax=50359959552 \
--sysctl kernel.shmmni=4096 \
--sysctl kernel.shmall=12294912 \
--sysctl kernel.sem="250 32000 100 128" \
--hostname goldilocks-0 - entrypoint-init.sh
docker container 수행 시 DB를 생성 및 table create shell 이다.
#!/bin/bash
# DB CREATE START
#DB STARTUP
function db_startup
{
gsql sys gliese --as sysdba <<EOF
\startup
\q
EOF
check=`ps -ef|grep gmaster|grep -v "grep"|wc -l`
if [ $check -eq 1 ]
then
echo "db startup success !!!!"
glsnr --start
glsnr --status
else
echo "db startup failure !!!"
fi
}
#DB CREATE
function init_cluster(){
gcreatedb
gsql sys gliese --as sysdba <<EOF
STARTUP
\q
EOF
gsql sys gliese --as sysdba <<EOF
ALTER TABLESPACE $TABLE_SPACE_NAME ADD DATAFILE '$TABLE_SPACE_FILE_NAME' SIZE $TABLE_SPACE_SIZE;
ALTER TABLESPACE $TABLE_UNDO_NAME ADD DATAFILE '$TABLE_UNDO_FILE_NAME' SIZE $TABLE_UNDO_SIZE;
ALTER TABLESPACE $TEMP_TABLESPACE_NAME ADD MEMORY '$TEMP_TABLESPACE_FILE_NAME' SIZE $TEMP_TABLESPACE_SIZE;
CREATE USER $SERVICE_ACCOUNT_NAME IDENTIFIED BY $SERVICE_ACCOUNT_PASSWD DEFAULT TABLESPACE $TABLE_SPACE_NAME TEMPORARY TABLESPACE $TEMP_TABLESPACE_NAME;
GRANT ALL ON DATABASE TO $SERVICE_ACCOUNT_NAME;
CONNECT $SERVICE_ACCOUNT_NAME $SERVICE_ACCOUNT_PASSWD;
$CREATE_TABLE_QUERY;
\q
EOF
gsql sys gliese --as sysdba -i $GOLDILOCKS_HOME/admin/standalone/DictionarySchema.sql --silent
gsql sys gliese --as sysdba -i $GOLDILOCKS_HOME/admin/standalone/InformationSchema.sql --silent
gsql sys gliese --as sysdba -i $GOLDILOCKS_HOME/admin/standalone/PerformanceViewSchema.sql --silent
glsnr --start
glsnr --status
}
DBF_CHECK=`find "${HOME}" -type f -name "*.dbf"|wc -l`
if [ $DBF_CHECK -gt 0 ]
then
db_startup
else
rm ~/.bashrc
cp /home/sunje/goldilocks_home/bashrc-init ~/.bashrc
cp /home/sunje/goldilocks_home/gsql.ini ~/.gsql.ini
cp /home/sunje/goldilocks_home/odbc.ini ~/.odbc.ini
source ~/.bashrc
set -euxo pipefail
MY_NAMESPACE=goldilocks
MY_POD_NAME=${HOSTNAME}
#환경 설정 값이 있으면 ENV에 있는 값으로 없으면 아래 정의 되어 있는 값으로 한다.
TABLE_SPACE_SIZE=${TABLE_SPACE_SIZE:-100M}
TABLE_UNDO_SIZE=${TABLE_UNDO_SIZE:-128M}
TABLE_SPACE_NAME=${TABLE_SPACE_NAME:-MEM_DATA_TBS}
TABLE_UNDO_NAME=${TABLE_UNDO_NAME:-MEM_UNDO_TBS}
TABLE_SPACE_FILE_NAME=${TABLE_SPACE_FILE_NAME:-data_01.dbf}
TABLE_UNDO_FILE_NAME=${TABLE_UNDO_FILE_NAME:-undo_01.dbf}
TEMP_TABLESPACE_SIZE=${TEMP_TABLESPACE_SIZE:-100M}
TEMP_TABLESPACE_NAME=${TEMP_TABLESPACE_NAME:-MEM_TEMP_TBS}
TEMP_TABLESPACE_FILE_NAME=${TEMP_TABLESPACE_FILE_NAME:-temp_01}
SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME:-SA}
SERVICE_ACCOUNT_PASSWD=${SERVICE_ACCOUNT_PASSWD:-passwd}
CLUSTER_PORT=${CLUSTER_PORT:-10101}
GOLDILOCKS_HOME=/home/sunje/goldilocks_home
export ODBCINI=/home/sunje/goldilocks_data/$MY_NAMESPACE/$MY_POD_NAME/conf/odbc.ini
echo $GOLDILOCKS_DATA
echo $SERVICE_ACCOUNT_NAME
echo $SERVICE_ACCOUNT_PASSWD
echo $TABLE_SPACE_SIZE
echo $TABLE_UNDO_SIZE
echo $TEMP_TABLESPACE_SIZE
# Kubernetes stop 없으므로 무조건 삭제 -shw-
rm -rf /home/sunje/goldilocks_data/$MY_NAMESPACE/$MY_POD_NAME
mkdir -p /home/sunje/goldilocks_data/$MY_NAMESPACE/$MY_POD_NAME
mkdir -p /home/sunje/nfs_volumn/$MY_NAMESPACE
export GOLDILOCKS_DATA=/home/sunje/goldilocks_data/$MY_NAMESPACE/$MY_POD_NAME
cp /home/sunje/goldilocks_data_create/init-data/* /home/sunje/goldilocks_data/$MY_NAMESPACE/$MY_POD_NAME -R
#DB CREATE
init_cluster
fi
tail -f $GOLDILOCKS_DATA/trc/system.trc
- build 세부 내역
- make build
goldilocks dokcer image를 생성 한다.
$>make build - make run_shell
생성 한 Image를 이용하여 Goldilocks DB Container 생성 한다.
$> docker run -it --rm --name $(CONTAINER_NAME)-$(CONTAINER_INSTANCE) $(PORTS) $(OPTION) $(ENV) $(NS)/$(IMAGE_NAME):$(VERSION) - make exec_shell
생성한 Container를 수행 한다.
$> docker exec -it $(CONTAINER_NAME)-$(CONTAINER_INSTANCE) bash
'sunjesoft > Goldilocks 가이드' 카테고리의 다른 글
Goldilocks 운영 가이드 (0) | 2021.12.30 |
---|---|
Goldilocks / Oracle 비교 자료 (0) | 2019.10.16 |