Docker Compose 소개

2018-12-01

개요

  • docker 로 컨테이너를 띄우기 위해서는 docker run 옵션을 사용한다.
  • 다수의 컨테이너를 매번 docker run 옵션으로 띄우는 것은 비효율 적이고, 컨테이너의 상황도 직접 확인해야 한다.
  • 그것을 커버하기 위해 사용하는 것이 docker compose

Docker Compose란?

  • 다수의 컨테이너를 개별 서비스로 정의하여 컨테이너 묶음으로 관리할 수 있다.
  • 컨테이너를 이용한 서비스 개발과 CI를 위하여 다수 컨테이너를 하나의 프로젝트로 다룰 수 있는 작업환경 제공한다.
  • 다수 컨테이너의 옵션과 환경을 정의한 파일(docker-compose.yml)을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작한다.
    version: '3'
    # services 아래로 도커 컴포즈 프로세스를 정의
    services:
    # web이라는 도커 컴포즈 프로세스의 스펙
    web:
      # docker repository에 있는 이미지
      image: 이미지 이름
      #노출 시킬 container 포트
      expose:
         - "80"
         - "443"
      #컨테이너 이름
      container_name: docker-test
      network_mode: bridge
      # 컨테이너 내의 환경변수
      environment:
        - _IS_TEST=TRUE
      #호스트 서버와 docker container 간의 볼륨공유
      volumes:
        - ./public_html:/var/www/html
    
  • 상기 파일을 docker run으로 쓰면
    docker run --expose 80 --expose 443 --name docker-test -network bridge -env _IS_TEST=TRUE -v /mnt/workspace/docker-test/public_html:/var/www/html 블라블라...
    

    너무 길다..

정리

  • Docker compose는 docker run 명령을 매번 치지 않아도 되는 효율성이 있다.
  • 여러 서비스를 하는 컨테이너를 관리하기 편하다.
  • 대신 하나의 컨테이너에 여러 args 때문에 불편할 경우 도커 컴포즈를 추가적으로 설치할 필요가 없으니 쉘 스크립트로 대체하자.