Page History
| Table of Contents | ||
|---|---|---|
|
여러개의 컨테이너, 즉 여러개로 구성된 어플리케이션을 구축하기 위해 컨테이너를 여러번 실행 그리고 설정이 필요하다.
또한 여러개 컨테이너가 재대로 작동하는지 테스트 단계에서 매우 복잡하다.
Docker Compose 는 여러개의 컨테이너를 하나의 서비스로 정의하여 컨테이너 묶음으로 설치 및 설정, 관리 할 수 있으며,
컨테이너를 이용한 서비서의 개발과 배포빌드를 위한 여러개의 컨테이너를 하나의 프로젝트로 다루는 작업 환경을 제공한다Docker Compose 는 빠르게 도커 개발 환경을 올려 사용할 수 있게 만들어진 도구이다.
YAML파일을 이용, 여러 컨테이너들의 설정을 저장, 반복작업이나
에러, 또는 롤링작업들을 쉽게 구현 할 수 있는 가장 큰 장점을 가지고 있다.
옵션과 설정 및 정의한 파일을 순차적으로 실행하는 방식이다.
컨테이너의 의존성, 네트워크, 볼륨 등을 복합적으로 정의 할 수 있으며,
설정 파일에 정의된 서비스의 컨테이너 수를 유동적으로 조절, 컨테이너의 서비스 디스커버리도 자동으로 구성한다해당 컨테이너들을 시작시키고, 링크하며, 업데이트하고 중지하는 모든 작업을 자동화 한다.
Docker Compose 설치
Docker Compose는 CURL을 통해서 설치할 수 있으며 가급적 Compose 설치는 공식 사이트를 참조한다.
또한 Docker compose 릴리즈 업데이트는 공식 사이트를 참조한다.
Docker| Code Block |
|---|
curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 8079k 100 8079k 0 0 256k 0 0:00:31 0:00:31 --:--:-- 307k |
Docker Compose
퍼미션 수정권한설정
| Code Block |
|---|
# sudo chmod +x /usr/local/bin/docker-compose # sudo chown <username> /usr/local/bin/docker-compose |
Docker Compose
버전 확인설치확인
| Code Block |
|---|
# docker-compose --version docker-compose version 1.21.0, build 1719ceb |
Docker Compose 업그레이드
Compose를 업그레이드 한 후 기존 컨테이너를 제거하거나 마이그레이션을 한다.
| Code Block |
|---|
docker-compose migrate-to-labels docker container rm -f -v myapp_web_1 myapp_db_1 ... |
Docker Compose 삭제
| Code Block |
|---|
rm /usr/local/bin/docker-compose pip uninstall docker-compose |
Docker Compose 기본사용법
컨테이너의 환경설정등이 정의된 yaml 파일을 로드하여 도커 엔진을 통해 컨테이너를 생성한다.
즉, compose는 가장 먼저 yaml 파일이 작성 및 정의 되어야 한다.
다음은 해당 디렉토리 안에 docker-compose.yml 파일을 생성하였다.
| Code Block |
|---|
[root@localhost opt]# tree compose/
compose/
└── docker-compose.yml |
그리고 docker-compose.yml 안에 아래와 같은 내용을 작성하였다.
해당 내용은 볼륨마운트 옵션을 추가하여 워드프레스와 데이터베이스를 생성하는 컴포즈 파일이다.
| Code Block |
|---|
version: '2' //빌드할 버전 services: db: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql restart: always environment: //환경변수 설정 MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image: wordpress:latest volumes: //컨테이너볼륨 설정 - ./wp:/var/www/html ports: //컨테이너 포트 매핑 - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress |
이제 다음의 명령어를 통하여 compose를 실행 시킨다.
| Code Block |
|---|
[root@localhost compose]# docker-compose up |
Docker Compose 워크플로
UP
컴포즈 파일에 정의된 모든 컨테이너 실행. 그 로그 결과를 취합.
Build
도커파일에 의해 만들어진 이미지를 리빌드.
up 명령어는 이미지가 존재하지 않는 경우 이를 빌드하지 않기 때문에 이미지를 업데이트해야 하는 경우 이 명령어를 사용.
ps
컴포즈에 의해 관리되는 컨테이너들의 상태 표시.
run
one-off 명령으로 컨테이너 실행.
logs
컴포즈가 관리하는 컨테이너들에 대한 로그 취합.
stop
컨테이너 중지 (삭제는 안함)
rm
중지된 컨테이너 삭제.
-v 볼륨옵션을 사용하여 도커에서 관리하는 볼륨들을 삭제하는것이 필수.