[Docker] compose 기본 사용법
Docker 컨테이너가 많아지고 각각의 컨테이너별 실행 옵션들을 모두 관리할 수 없기 때문에 YAML 파일을 사용하여 다중 컨테이너를 관리합니다. 컨테이너 실행 관리뿐만 아니라 개발 및 테스트 등 여러 환경에서의 작업을 구성할 수 있습니다.
docker compose 설치
docker를 설치해도 docker compose는 같이 설치되지 않기 때문에 docker compose를 설치합니다.
# apt install docker-compose
설치 완료 확인
# docker-compose --version
docker-compose version 1.29.2, build unknown
docker-compose.yml 파일 생성
docker compose 명령어로 컨테이너 실행 시 docker-compose.yml
파일 이름을 기본으로 실행합니다. 옵션으로 다른 이름의 YAML 파일을 지정하여 사용할 수도 있지만 기본 이름을 많이 사용합니다.
간단히 httpd 컨테이너 이미지를 사용하여 docker-compose.yml 파일을 작성해보겠습니다.
# vi docker-compose.yml
services:
httpd1:
image: httpd:latest
container_name: my-web-server1
ports:
- "8080:80"
가장 먼저 최상위에 services를 선언한 이후에 서비스 관련 내용을 작성해줍니다.httpd1
이름의 서비스를 생성해주고 컨테이너 관련 설정을 넣어줍니다.
간단히 httpd:latest
이미지를 사용해서 my-web-server1
이름의 컨테이너를 생성하고 외부에서 8080번 포트로 접속 시 80번 포트로 포트포워딩하도록 설정하였습니다.
docker-compose 실행 및 종료
docker-compose.yml 파일을 생성한 위치에서 up
명령어로 컨테이너를 실행합니다.
- -d 옵션은 백그라운드에서 실행하는 옵션입니다.
# docker-compose up -d
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done
docker-compose.yml 파일에 정의한 내용으로 컨테이너가 실행되었는지 확인합니다.
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
841d5eb7fee8 httpd:latest "httpd-foreground" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp my-web-server1
컨테이너 실행 후 8080번 포트로 접속 시 웹 접속을 확인하실 수 있습니다.
stop
명령어로 컨테이너를 종료합니다
# docker-compose stop
Stopping my-web-server1 ... done
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
841d5eb7fee8 httpd:latest "httpd-foreground" 2 days ago Exited (0) 2 minutes ago my-web-server1
down
명령어를 사용 시에는 컨테이너를 종료할 뿐만 아니라 제거합니다.
# docker-compose down
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker-compose.yml 파일이나 기타 설정을 변경한 후 컨테이너를 재시작하는 것만으로 적용이 안되는 경우가 있어 설정 변경 후에는 down
과 up
을 같이 진행하는 것이 좋습니다.
# docker-compose down && docker-compose up -d
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done
간단히 docker-compose.yml 파일을 작성해보고 실행하는 것을 알아보았습니다.
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
'Docker' 카테고리의 다른 글
[Docker] Volumes 설정 (0) | 2022.10.11 |
---|---|
[Docker] Restart 설정 (0) | 2022.09.20 |
[Docker] Container name 설정 (0) | 2022.09.19 |
[Docker] 기본 명령어 (0) | 2022.09.15 |
[Docker] 간단 설치 방법 (0) | 2022.09.07 |