[도커] 도커 컴포즈

백현균·2023년 6월 6일

1. 도커 컴포즈?

  • 단일서버에서 여러개의 컨테이너를 하나의 서비스로 정의하고, 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구

2. 사용하는 이유

  • 여러 개의 컨테이너가 하나의 어플리케이션으로 동작될 때, 테스트를 하기 위해서는 동작에 필요한 컨테이너를 하나씩 생성해야한다. 예를 들면 웹 어플리케이션을 테스트할 경우, 웹서버컨테이너, 데이터베이스 컨테이너 두 개의 컨테이너를 각각생성해야하는데, 도커 컴포즈를 이용할 경우 하나의 서비스로 이를 해결할 수 있다.

    $ docker run --name wordpress_db -d mysql:8
    
    $ docker run -d -p 8080:80 \
    --link wordpress_db:mysql --name seunghwan_wordpress \
    wordpress:latest

3. 동작 방식

  • 도커 컴포즈를 사용하면 설정 파일(yml파일)로 컨테이너의 옵션과 환경을 정의하여 도커 컴포즈가 이를 순차적으로 생성하는 방식으로 동작
  • 도커 컴포즈 설정 파일은 도커엔진의 run 명령어의 옵션을 통해 사용 가능하며, 각 컨테이너의 의존성, 네트워크, 볼륨 등을 함께 정의할 수 있음

4. 설치방법

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
  • 설치 후 버전 확인
docker-compose -v

5. docker-compose.yml 작성 및 활용

  • 설정파일 예시
version: '2'
services:
  db:
    image: mariadb:10.9
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress:
    image: wordpress:latest
    volumes:
      - ./wp:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: wordpress
  • docker-compose up을 하게 되면 해당 설정파일을 읽어와서 컨테이너를 순차적으로 생성하고 실행
    - 필요에 따라 설정파일이 생성된 디렉터리에서 명령어를 입력해야할 수도있음

6. 명령어

1) up

  • docker-compose.yml설정파일에 정의된 컨테이너를 실행
- 컨테이너 실행
docker-compose up
docker-compose up -d -> -d는 도커컴포즈를 백그라운드로 실행

- 컨테이너 새로 만들기
docker-compose up --force-recreate

- 도커 이미지를 다시 빌드 -> 설정파일내에 build로 선언된 컨테이너만 빌드
docker-compose up --build
docker-compose up --build 컨테이너명 -> 특정 컨테이너만 빌드

2) start

  • 중지된 컨테이너를 재개
docker-compose start
docker-compose start 컨테이너명

3) restart

  • 컨테이너를 재시작
docker-compose restart
docker-compose restart 컨테이너명

4) stop

  • 컨테이너를 중지
docker-compose stop
docker-compose stop 컨테이너명

5) down

  • 컨테이너를 종료하고 삭제
docker-compose down

0개의 댓글