단일 서버에서 여러 컨테이너를 프로젝트 단위로 묶어서 관리할 수 있게 도와주는 기능이다.
- docker-compose.yml 파일을 통해 사용하는 컨테이너를 명시적으로 관리할 수 있다.
- 프로젝트 단위로 도커 네트워크와 볼륨을 관리할 수 있다.
- 프로젝트 내 서비스 간 의존성 정의가 가능하다.
- 각각의 서비스 명으로 네트워크 상에서 호출할 수 있는 서비스 디스커버리 자동화 기능을 제공한다.
- 손쉽게 컨테이너를 수평 확장할 수 있다.
- 주요 사용 목적
- 로컬 개방 환경 구성
- 자동화된 테스트 환경 구성
- 단일 호스트 내 컨테이너를 선언적 관리
Docker-Compose 구성
- 프로젝트
- docker-compose에서 다루는 워크스페이스 단위
- 함께 관리하는 서비스 컨테이너의 묶음을 의미한다.
- 프로젝트 단위로 기본 도커 네트워크가 생성된다.
- 서비스
- docker-compose에서 컨테이너를 관리하기 위한 단위
- scale을 통해 서비스 컨테이너의 수를 확장할 수 있다.
- 컨테이너
- 서비스를 통해 컨테이너를 관리할 수 있다.
docker-compose.yml
- docker-compose의 구성 파일로 한 파일 안에 여러 컨테이너 설정 내용을 저장할 수 있다.
- version, services, networks, volumes 총 4개의 최상위 옵션을 제공한다.
- 기본적으로 도커 네트워크는 브리지 네트워크, 이름은 [프로젝트명]_default로 생성된다.
docker-compose.yml의 기본 구조는 다음과 같다.
version: "3"
services:
db:
image: mysql:5.7
volumes:
- db:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=PASSWORD
- MYSQL_DATABASE=DATABASE
- MYSQL_USER=USER
- MYSQL_PASSWORD=PASSWORD
networks:
- test
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: USER
WORDPRESS_DB_PASSWORD: PASSWORD
WORDPRESS_DB_NAME: DATABASE
networks:
- test
volumes:
db: {}
networks:
test: {}
- depends_on 옵션으로 컨테이너가 실행되는 순서를 정의할 수 있다.
- 해당 설정에서는 db 실행된 후, wordpress가 실행된다.
- 해당 설정에서는 db 실행된 후, wordpress가 실행된다.
- volumes 옵션 아래에는 volume의 이름을 정의할 수 있다.
- networks 옵션 아래에는 network의 이름을 정의할 수 있다.
- {} 안에 아무것도 입력하지 않으면 docker에서 제공하는 기본 옵션으로 생성된다.
docker-compose 명령어
- docker-compose ls
- 실행 중인 프로젝트 목록 확인
- 실행 중인 프로젝트 목록 확인
- docker-compose ls -a
- 전체 프로젝트 목록 확인
- docker-compose up
- Foreground로 docker-compose 프로젝트 실행
- Foreground로 docker-compose 프로젝트 실행
- docker-compose -p [프로젝트 명]
- 프로젝트 명 변경 옵션
- 프로젝트 명 변경 옵션
- docker-compose -d
- Background로 docker-compose 프로젝트 실행
- Background로 docker-compose 프로젝트 실행
- docker-compose down
- docker-compose 프로젝트 내 컨테이너 및 네트워크 종료 및 제거
- docker-compose 프로젝트 내 컨테이너 및 네트워크 종료 및 제거
- docker-compose down -v
- docker-compose 프로젝트 내 컨테이너, 네트워크 및 볼륨 종료 및 제거
- docker-compose 프로젝트 내 컨테이너, 네트워크 및 볼륨 종료 및 제거
- docker-compose up --scale [service 명]=[개수]
- 해당 서비스를 개수로 확장
- Host Port와 Service 내에서 container_name을 지정하면 확장이 불가능하다.
- docker-compose logs
- 프로젝트 내 서비스 로그 확인
- 프로젝트 내 서비스 로그 확인
- docker-compose events
- 프로젝트 내 컨테이너 이벤트 확인
- 프로젝트 내 컨테이너 이벤트 확인
- docker-compose images
- 프로젝트 내 이미지 목록
- 프로젝트 내 이미지 목록
- docker-compose ps
- 프로젝트 내 컨테이너 목록
- 프로젝트 내 컨테이너 목록
- docker-compose top
- 프로젝트 내 실행 중인 프로세스 목록
'Docker' 카테고리의 다른 글
[Docker] Dockerfile (0) | 2022.11.11 |
---|---|
[Docker] Docker 기본 (0) | 2022.11.10 |
[Docker] 도커란? (0) | 2022.09.17 |