이전 포스팅에서 docker network를 이용하여 하나의 네트워크 안에 여러 개의 멀티 컨테이너를 배포하는 것을 실습해보았습니다. 그런데 만약 이전 포스팅처럼 2개의 컨테이너를 배포하는 것이 아니라 100개의 컨테이너를 배포해야 되는 상황이라면 어떨까요?
분명 도커를 사용함으로 인해서 많은 부분 배포가 간결해졌지만, 100개의 컨테이너를 손수 배포하는 것은 여전히 부담스럽습니다. 또한 중간에 오타가 나거나 실수를 하는 경우가 발생할 수 있고 다수의 인스턴스에 일관되게 배포하는 것에 어려움이 있을 수 있습니다.
이러한 문제를 해결하는 것이 바로 docker-compose입니다. docker-compose는 docker 프로그램을 정의하고 멀티 컨테이너를 손쉽게 배포할 수 있는 도구입니다. 컨테이너 하나하나 명령어를 입력해서 배포하는 것이 아니라 yaml 파일에 사용할 컨테이너의 정보를 입력하고, 명령어로 손쉽게 배포할 수 있습니다.
※ docker-compose install은 아래 url을 참고하세요!
docker-compose 명령어
docker-compose의 명령어 역시 docker와 크게 다르지 않습니다. 기본적으로 -d와 같은 백그라운드 실행 명령어는 동일합니다.
docker-compose up
명령어를 입력한 다음 터미널에서 실행 명령어를 입력하면 wordpress 컨테이너와 mysql 컨테이너가 함께 올라가는 것을 확인하실 수 있습니다. 또한 localhost:8000 포트로 접속하면 wordpress 화면을 확인할 수 있습니다. (특정 서비스만 먼저 따로 실행시키고 싶을 경우 사용합니다)
docker-compose ps
데몬으로 실행되는 컨테이너들 중에 compose에 등록된 컨테이너들의 상태를 볼 수 있습니다.
docker-compose restart
compose에 등록된 컨테이너를 재시작 할 수 있습니다. 또는 서비스 이름을 붙여 명령을 할 경우, 해당 컨테이너만 재시작할 수 있습니다.
docker-compose start
compose에 등록된 컨테이너를 실행합니다. 기존에 컨테이너가 생성된 상태이어야 합니다. 역시 이름을 붙여 특정 컨테이너만 실행할 수 있습니다.
docker-compose stop
compose에 등록된 컨테이너를 종료합니다. 이름을 붙여 특정 컨테이너만 종료할 수 있습니다.
docker-compose rm
compose에 등록된 컨테이너를 삭제합니다. 이름을 붙여 특정 컨테이너만 삭제할 수 있습니다.
간단한 예시코드로써 wordpress와 mysql 이미지를 docker-compose를 이용하여 배포해보도록 하겠습니다. 앞서 말씀드린대 컨테이너에 대한 정보를 yaml파일을 이용해서 작성하게 됩니다. yaml(yml)은 json과 비교했을 대 간결하고, 주석도 지원하여서 가독성이 좋습니다. 단, 들여 쓰기에 따라 구조가 바뀌므로 작성할 때 올바르게 들여 쓰기를 했는지 확인해야 합니다.
※ 상세한 YAML Syntax는 아래 URL에서 확인합니다 :)
그럼 이제 docker-compose.yml이라는 파일을 만들고 아래의 코드를 입력해 보겠습니다.
version: '3'
services:
wordpress:
image: wordpress
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_NAME: wp
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: wp
ports:
- "8000:80"
restart: always
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: wp
MYSQL_DATABASE: wp
MYSQL_USER: wp
MYSQL_PASSWORD: wp
코드를 입력한 다음 아래의 명령어로 docker-compose를 실행해보겠습니다.
docker-compose up -d
# 또는
docker-compose -d docker-compose.yml up
명령어를 입력한 다음 터미널에서 실행 명령어를 입력하면 wordpress 컨테이너와 mysql 컨테이너가 함께 올라가는 것을 확인하실 수 있습니다. 또한 localhost:8000 포트로 접속하면 wordpress 화면을 확인할 수 있습니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker Network를 이용하여 네트워크 공유하기 (0) | 2020.01.31 |
---|---|
[Docker] Docker Tutorial (3) : 생성한 이미지 AWS에 배포하기 (2) | 2019.12.09 |
[Docker] Docker Tutorial (2) : 직접 이미지 만들기 (0) | 2019.12.09 |
[Docker] Docker Tutorial (1) : 기본적인 사용법 (0) | 2019.12.08 |
[Docker] Docker의 개요 (2) | 2019.11.30 |