개요
이 문서는 도커 이미지를 이용하여 Altibase 컨테이너를 생성하여 서비스 하기 위한 가이드이다.
이 문서에서는 도커 19.03.2 버전을 기준으로 Altibase 도커 이미지를 생성하고 컨테이너를 생성하여 서비스하는 방법에 대해 기술한다.
- Altibase 7.1.1 이상
- Docker 19.03.2 이상
도커 개요
도커는 Docker.Inc에서 제공하는 컨테이너 기반의 오픈소스 가상 플랫폼이다.
도커 기술은 Linux 커널과 함께 Cgroups 및 네임스페이스와 같은 커널의 기능을 사용하여 프로세스를 분리함으로써 독립적으로 실행될 수 있도록 해 주며 컨테이너를 실행하는 기능 뿐만 아니라 컨테이너 생성 및 구축, 이미지 전송, 이미지 버전 관리 프로세스를 용이하게 해 준다.
이는 가상화 기술의 하나이지만 기존 가상머신과 비교시 게스트 OS가 필요없고 프로세스 단위로 격리되어 필요한 만큼만 CPU, 메모리 등을 사용함으로써 가상화로 인한 손실이 거의 발생되지 않는다.
• 도커와 가상머신의 구조 비교자료출처 : https://www.docker.com/resources/what-container
도커에서 중요한 개념은 이미지와 컨테이너이다.
• 이미지 :컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 변하지 않는다
베이스 이미지 : 리눅스 배포판의 기본 파일만 설치된 파일이다.
도커 이미지 : 베이스 이미지에 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 파일 하나로 만든 것이다.
이 문서에서 이미지라 함은 베이스 이미지에 Altibase 데이터베이스와 필요한 라이브러리를 설치한 뒤 파일 하나로 만든 도커 이미지를 의미한다.
• 컨테이너 : 이미지를 실행한 상태로 추가되거나 변경되는 값은 모두 컨테이너에 저장된다.
즉, 동일한 이미지로 다중 컨테이너를 만들경우 하부 이미지에 대한 접근은 공유하나 각각의 컨테이너는 각자의 데이터를 가지고 있게된다.
• 이미지와 컨테이너의 관계
자료출처 : https://docs.docker.com
도커 설치
- 이 문서에서는 ubuntu 리눅스에 설치하는 방법을 기준으로 한다.
ubuntu나 centos가 아닌 경우는 도커 설치페이지를 참고로 하여 설치하도록 한다. - 도커를 실행하기 위한 커널버전은 3.10.X 이상이다.
- 도커는 root권한이 필요하다. root가 아닌 사용자가 sudo 없이 사용하려면 docker 그룹에 해당 사용자를 추가한다
1 도커 설치
도커는 리눅스 배포판의 종류에 따라 도커 패키지를 설치해 주는 스크립트를 제공한다.
2 도커 설치 확인
설치가 완료되면 docker version을 이용하여 확인 가능하다.
Altibase 도커 이미지
- Altibase 도커 이미지는 Altibase에서 제공하는 이미지를 사용할 수도 있고 사용자가 만들어서 사용할 수 있다.
Altibase 도커 이미지 다운로드
Altibase에서 제공하는 도커 이미지는 도커허브에서 다운로드 할 수도 있고 docker pull 명령어를 사용하여 다운로드 할 수 있다.
docker pull 명령어를 통해서 Altibase 도커 이미지를 다운로드 받는 방법은 다음과 같다
Altibase 도커 이미지 만들기
사용자가 Altibase 도커 이미지를 만드는 방법은 다음과 같다.
1. Altibase 설치
- Altibase 도커 이미지를 만들기 위해서는 먼저 Altibase가 설치되어 있어야 한다.
- Altibase 설치에 대한 가이드는 Altibase 설치 매뉴얼을 참조한다.
2. 도커 파일 구성
- 도커파일은 이미지에 패키지나 데이터를 추가하는 방법을 담고 있는 명령어 집합이다.
도커파일의 이름은 Dockerfile이며 Build시점에 Dockerfile의 경로를 지정해 주어야 한다.
3. 초기화 스크립트 작성
- 도커 파일에 정의된 ENTRYPOINT는 컨테이너가 시작되었을 때 실행할 스크립트 혹은 명령이다.
이 문서에서 도커 파일에서 사용되는 스크립트는 환경설정을 위한 set_altibase.env 와 실행 스크립트인 docker-entrypoint.sh 이다.
1. docker-entrypoint.sh 작성 예
2. set_altibase.env 작성 예
4. 도커 이미지 생성
도커 이미지는 docker build를 사용하여 생성한다.
OPTIONS에 대한 좀 더 자세한 내용은 여기에서 확인할 수 있다.
Altibase 서비스 컨테이너 생성
컨테이너 생성
도커이미지로 컨테이너를 생성할 때는 docker run을 사용한다.
OPTION에 대한 좀 더 자세한 내용은 여기에서 확인할 수 있다.
1. 컨테이너 생성
컨테이너 생성을 위해서는 다음과 같이 사용한다.
필수 옵션 -e MODE daemon Altibase 데이터베이스를 데몬으로 실행하고 터미널을 유지한다. isql Altibase 데이터베이스를 실행하고 컨테이너 내부에서 isql에 접속한 상태를 유지한다. shell Altibase 데이터베이스를 실행하고 컨테이너 내부에서 shell에 접속한 상태를 유지한다. replication 이중화 연결을 위한 추가 노드 생성시에 사용한다. 마스터 노드 생성시에는 이 옵션을 선택하지 않는다.
2. 외부 볼륨 연결
도커는 컨테이너 계층에 변경된 데이터를 저장하게 되며 이 데이터는 컨테이너가 삭제되면 데이터도 같이 삭제된다.
따라서 데이터의 영속성을 보장하기 위하여 호스트의 파일시스템을 컨테이너에 마운트하는 방식의 데이터 볼륨을 사용한다.
데이터 볼륨의 특징은 다음과 같다.
- 데이터 볼륨은 재사용이 가능하며 컨테이너 간의 공유가 가능하다.
- 데이터 볼륨은 호스트에서 직접 접근이 가능하다.
데이터 볼륨은 기본적으로 컨테이너와 독립적으로 운영되기 때문에 컨테이너가 삭제되어도 계속 유지된다
데이터 볼륨을 지정하는 방법은 다음과 같다.
컨테이너 간 이중화 연결
- Altibase 이중화
운영중인 데이터베이스의 로그를 다른 데이터베이스로 전송하여 재실행함으로써 양쪽 데이터 베이스에 같은 데이터를 유지하게 함으로써 서버의 예기치 않은 종료가 발생했을 때 대체 서버를 이용하여 서비스를 재개할 수 있는 무정지 운영 환경을 제공하는 기능이다.
이중화에 대한 매뉴얼은 여기에서 확인할 수 있다. - 컨테이너 간의 이중화 연결 순서.
1. 이중화 연결을 위한 하나의 도커 네트워크를 생성한다.
2. 마스터 노드의 컨테이너를 생성된 도커 네트워크에 조인한다.
3. 추가할 노드의 컨테이너를 마스터 노드와 동일한 도커 네트워크에 조인한다. 컨테이너 간의 이중화 연결
1. 도커 네트워크 생성.
도커 네트워크는 docker network create 명령어로 생성한다
생성된 네트워크는 docker network ls 명령어로 확인할 수 있으며 상세한 내용은 docker inspect 명령어로 확인 가능하다isolated_network란 이름으로 도커 네트워크를 생성한다.
생성된 네트워크는 docker network ls 로 확인한다.
생성된 네트워크에 대한 상세한 내용을 확인한다.
2. 마스터 노드의 컨테이너를 생성하면서 도커 네트워크에 조인한다필수 옵션 --net 컨테이너가 실행될 네트워크 명 --hostname 호스트네임 -e MASTER_REP_PORT 이중화 포트 번호
3. 추가 노드의 컨테이너를 생성하면서 마스터 노드의 도커 네트워크에 조인한다필수 옵션 --net 컨테이너가 실행될 네트워크 명 --hostname 호스트네임 -e MASTER_HOST_NAME 마스터 노드의 호스트네임 -e MASTER_DB_PORT 마스터 노드의 서비스 포트 번호 -e MASTER_REP_PORT 마스터 노드의 이중화 포트 번호 -e SLAVE_HOST_NAME 추가 노드의 호스트네임 -e SLAVE_REP_PORT 추가 노드의 이중화 포트 번호 4 네트워크 정보를 확인한다
Altibase 데이터베이스 구성
- Altibase 데이터베이스를 효과적으로 사용하기 위한 프로퍼티들에 대한 설명 및 설정은 Altibase 설정 가이드를 참조한다.
- Altibase 데이터베이스 구성과 운영을 위한 설명 및 설정은 Altibase 매뉴얼에서 확인할 수 있다.
Altibase 서버 접속
컨테이너 내부에서 Altibase 서버 접속
컨테이너 내부에서 Altibase 서버에 접속할 때는 isql 명령어를 사용한다.
2. 컨테이너 외부에서 Altibase 서버 접속
- 컨테이너 외부에서 Altibase 서버에 접속하기 위해서는 할당된 IP정보를 확인하여 isql 명령어의 -s 옵션에 해당 IP를 지정해 주어야 한다
IP확인은 docker inspect 명령어로 확인할 수 있다.
Altibase 서비스 컨테이너 중지
실행중인 컨테이너를 중지하기 위해서는 docker stop 명령어를 사용한다.
중지된 컨테이너는 삭제된 것은 아니며 docker start 명령어로 다시 실행시킬 수 있다.
Altibase 서비스 컨테이너 삭제
- 컨테이너를 삭제하기 위해서는 컨테이너가 중지되어 있어야 한다.
- 컨테이너 조회시에는 docker ps 명령어를 사용한다. 중지되어 있는 컨테이너까지 조회시에는 -a 옵션을 추가한다.
중지되어 있는 컨테이너를 삭제하기 위해서는 docker rm 명령어를 사용한다.
참고
Docker Documentation : https://docs.docker.com/