도커 컴포즈란?
도커 컴포즈는 여러 개의 도커 컨테이너를 정의하고 실행하기 위한 도구입니다.
도커 컴포즈를 사용하면 YAML 파일로 컨테이너, 네트워크, 볼륨 등의 설정 정보를 작성할 수 있습니다.
이렇게 작성된 설정 파일을 바탕으로 도커 컴포즈가 컨테이너를 실행하고 관리합니다.
도커 컴포즈를 사용하면 여러 개의 컨테이너를 쉽게 실행하고 관리할 수 있습니다.
컨테이너 간의 의존성도 설정 파일에서 정의할 수 있어서 컨테이너 간의 연동 문제도 해결할 수 있습니다.
도커 컴포즈를 사용하면 개발 환경에서 컨테이너를 쉽게 구성하고 관리할 수 있으며,
컨테이너화된 애플리케이션의 배포와 관리도 쉽게 할 수 있습니다.
도커 컴포즈 파일 작성
도커 컴포즈에서는 YAML 파일을 사용하여 컨테이너, 네트워크, 볼륨 등의 설정 정보를 작성합니다.
도커 컴포즈 파일의 이름은 docker-compose.yml
이어야 합니다.
도커 컴포즈 파일은 프로젝트 루트 디렉토리에 위치해야 합니다.
도커 컴포즈 파일의 기본 구성 요소는 다음과 같습니다.
version: '3.9'
services:
[컨테이너 이름]:
image: [이미지 이름]
[추가적인 설정]
networks:
[네트워크 이름]:
[추가적인 설정]
volumes:
[볼륨 이름]:
[추가적인 설정]
- version: 도커 컴포즈 파일 버전
- services: 실행할 컨테이너 정보
- networks: 사용할 네트워크 정보
- volumes: 사용할 볼륨 정보
services, networks, volumes 등의 설정 항목은 필요에 따라서 추가하거나 제거할 수 있습니다.
도커 컴포즈 파일 작성을 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
다음은 docker-compose.yml
파일을 사용하여 nginx
와 mysql
컨테이너를 실행하는 예시입니다.
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: password
위 예시에서는 version을 3으로 설정하고, services에 web과 db라는 두 개의 컨테이너를 정의합니다.
web 컨테이너는 nginx 이미지를 사용하며 호스트의 80 포트와 컨테이너의 80 포트를 매핑하고, 호스트의 ./nginx.conf 파일과 컨테이너의 /etc/nginx/nginx.conf 파일을 연결합니다.
db 컨테이너는 mysql 이미지를 사용하며, 환경 변수로 MYSQL_ROOT_PASSWORD를 설정합니다.
도커 컴포즈 실행
도커 컴포즈 실행은 docker-compose up
명령어를 사용합니다.
이 명령어를 실행하면 docker-compose.yml
파일에 정의된 서비스를 실행합니다.
컨테이너가 이미 실행 중인 경우에는 새로운 컨테이너가 실행되지 않습니다.
새로운 컨테이너를 실행하려면 --force-recreate
옵션을 사용합니다.
도커 컴포즈 실행을 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
도커 컴포즈 중지
도커 컴포즈 실행을 중지하려면 docker-compose down
명령어를 사용합니다.
이 명령어를 실행하면 docker-compose.yml
파일에 정의된 서비스를 중지합니다.
컨테이너, 네트워크, 볼륨 등도 함께 삭제됩니다.
중지하기 전에 실행한 컨테이너를 모두 삭제하려면 -v
옵션을 사용합니다.
도커 컴포즈 중지를 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
도커 컴포즈 로그 확인
도커 컴포즈 실행 중인 서비스의 로그를 확인하려면 docker-compose logs
명령어를 사용합니다.
이 명령어를 실행하면 실행 중인 모든 컨테이너의 로그를 확인할 수 있습니다.
특정 서비스의 로그만 확인하려면 docker-compose logs [서비스 이름]
명령어를 사용합니다.
로그 확인 시 -f
옵션을 추가하면 실시간으로 로그를 확인할 수 있습니다.
도커 컴포즈 로그 확인을 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
도커 컴포즈 컨테이너 제거
도커 컴포즈 실행 중인 서비스의 컨테이너를 제거하려면 docker-compose rm
명령어를 사용합니다.
이 명령어를 실행하면 실행 중인 모든 컨테이너를 삭제합니다.
삭제할 서비스를 지정하려면 docker-compose rm [서비스 이름]
명령어를 사용합니다.
-f
옵션을 추가하면 컨테이너를 강제로 종료한 뒤 제거합니다.
도커 컴포즈 컨테이너 제거를 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
도커 컴포즈 네트워크 제거
도커 컴포즈 실행 중인 서비스의 네트워크를 제거하려면 docker-compose down
명령어를 사용합니다.
이 명령어를 실행하면 컨테이너, 네트워크, 볼륨 등을 모두 삭제합니다.
삭제 후에는 docker network ls
명령어를 사용하여 네트워크 목록에서 해당 네트워크가 제거되었는지 확인할 수 있습니다.
도커 컴포즈 네트워크 제거를 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
도커 컴포즈 볼륨 제거
도커 컴포즈 실행 중인 서비스의 볼륨을 제거하려면 docker-compose down -v
명령어를 사용합니다.
이 명령어를 실행하면 컨테이너, 네트워크, 볼륨 등을 모두 삭제합니다.
삭제 후에는 docker volume ls
명령어를 사용하여 볼륨 목록에서 해당 볼륨이 제거되었는지 확인할 수 있습니다.
도커 컴포즈 볼륨 제거를 위한 더 자세한 내용은 도커 공식 문서를 참고하세요.
이글은 ChatGPT의 도움을 받아 작성되었습니다.
'ChatGPT > Docker' 카테고리의 다른 글
[Docker][Swarm] Docker Swarm에서의 동적 작업 슬롯 번호 설정 (0) | 2023.04.27 |
---|---|
[Docker][Compose] Docker Compose로 애플리케이션 간 볼륨 공유하기 (0) | 2023.04.27 |
[Docker][Volume] 명령어 모음 (0) | 2023.04.24 |
[Docker][Network] 도커 명령어 모음 (0) | 2023.04.24 |
[Docker][Container] 도커 명령어 모음 (0) | 2023.04.24 |