이번 포스팅의 주제는 도커 컴포즈(Docker Compose)를 사용하는 방법에 관한 것이다.
도커 컴포즈는 여러대의 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구다.
YAML 파일을 사용하여 애플리케이션의 서비스를 구성한다.
1. 도커(Docker) 설치
# 도커 설치
$ sudo yum install -y docker
# 도커 서비스 시작
$ sudo systemctl start docker.service
# 도커에 로그인
$ docker login
2. 도커 컴포즈(Docker compose) 설치
# root 계정으로 진입
$ su
# 도커 컴포즈 설치
$ curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 권한 변경
$ chmod +x /usr/local/bin/docker-compose
# 설치 결과 확인
$ docker-compose --version
3. 도커를 실행하기 위한 docker-compose.yml 파일 생성
# docker-compose.yml 파일 생성
$ vi docker-compose.yml
#내용작성
# database container
db:
image: docker.io/mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=password
# application container
app:
image: docker.io/tomcat
ports:
- "8080:8080"
# web container
web:
image: docker.io/nginx
ports:
- "80:80"
4.docker-compose 실행
# 컨테이너 일괄 가동
$ docker-compose up -d
위의 명령어의 -d 옵션은 백그라운드에서 docker-compose에서 실행시키는 컨테이너들이 동작하게 하는 용도이다. 만약 실행에 오류가 발생할 경우 컨테이너들의 로그가 터미널에 그대로 나온다.
확인된 로그로는 db, web, app 컨테이너들 중에서 web만 error가 발생했다. 이는 이전 단계에서 테스트한 nginx가 동작하면서 80포트를 사용하고 있기 때문이다.
아래의 명령어를 이용하여 실행중인 nginx를 중지시켜 80포트를 확보 한 후, 다시 docker-compose를 실행해보면 다음과 같은 결과가 나온다.
# nginx 종료
$ nginx -s stop
# 도커 컴포즈 재실행
$ docker-compose up -d
실패한 컨테이너만 다시 실행되는 것을 확인할 수 있다.
5. 컨테이너 실행 상태 확인
$ docker ps
docker-compose.yml에 정의된 컨테이너들이 정상적으로 실행중인것을 확인할 수 있다.
도커 컴포즈를 사용하면 이처럼 여러개의 컨테이너를 한번에 실행상태로 만들 수 있다.
지금까지 도커를 사용할 때 항상 각각의 엔티티 마다 이미지를 다운로드하고, 설치하는 작업들을 개별적으로 수행했었다.
다음 서비스 업데이트 배포시에는 docker-compose를 꼭 활용해서 작업을 진행해야겠다. (엄청 편해보인다..)
다수의 컨테이너 설치가 편하다는 장점 외에도 복잡한 개발 환경을 yml 형태로 쉽게 공유할 수 있는것도 큰 장점이다.
참고자료
[1] IT 운용 체제 변화를 위한 데브옵스 | 2019 | 키와무라 세이고 ... | 링크
'클라우드 컴퓨팅 & NoSQL > Docker' 카테고리의 다른 글
Docker Image 사이즈 줄이기 (1) | 2023.04.09 |
---|---|
도커 컨테이너(Docker container) 빌드하기 (0) | 2021.04.11 |
도커(Docker) docker run <image>의 실행순서 (0) | 2021.04.09 |
도커(Docker)를 사용하는 이유 (0) | 2021.04.08 |
[Docker] Container 를 사용하는 이유 (0) | 2021.03.24 |