Develop/DevCourseTIL

06.15 데이터 엔지니어링 49일차 - Docker Compose

향식이 2023. 6. 15. 12:12

Docker-Compose 

  • 다수의 Container로 소프트웨어가 구성되는 경우 사용할 수 있는 툴 + 환경설정파일
    • docker-compose.yml(yaml)로 설정
    • 여기서 다양한 테스트등도 수행가능
    • 다양한 버전을 만드는 것도 일반적 (dev, test, prod 등등)
      • 개인적으로 개발할 때
      • product일 때 등등.. 
  • 개별 Container를 따로 관리하는 것보다 훨씬 더 생산성이 높음
  • 사용법 자체는 간단함, 소프트웨어를 구성하는 모든 컨테이너에게 적용됨
    • docker-compose up: docker run과 동일
    • docker-compose down: 컨테이너 중지 및 삭제까지 진행, 이미지는 그대로 있음
    • docker-compose pull: 그룹으로 진행
  • Docker Desktop의 일부로 설치됨
  • Docker Engine을 실행하고 먼저 터미널에서 버전 확인
    • 만약 docker-compose가 없다고 나오면 먼저 docker-compose부터 실행
  • Docker Compose v. 1.27+ 부터 v2와 v3가 합쳐짐

docker-compose.yml 작성

  • services: 다음으로 프로그램을 구성하는 서비스들을 지정
    • 각 서비스는 별개의 Docker image 지정과 Docker Container 실행으로 구성됨
    • 즉, 각 서비스는 자신의 Dockerfile을 갖고 있어야 함, 아니면 docker hub등에서 이미지를 다운로드
    • 서비스별로 포트번호, 환경변수, 디스크 볼륨등을 지정해야 함
    • 서비스 이름은 아무 이름이나 가능
  • volumes: 앞서 사용된 docker volume들을 지정
  • networks: 앞서 사용된 network들을 지정

docker-compose로 이미지 생성과 관리

  • docker-compose build
    • services 중에 build라고 지정된 것들에 대해서만 이미지들을 빌드
  • docker-compose pull
    • services 중에 image라고 지정된 것들에 대해서만 이미지들을 빌드
    • 로컬 이미지에서 찾은 후 hub에서 찾아봄
  • docker images
    • 모든 로컬 시스템에 존재하는 이미지들의 리스트
    • 각 개별 이미지 앞에 폴더 이름을 prefix로 붙임 (docker hub에서 읽어온 것을 제외)
  • docker-compose images
    • docker-compose를 통해 실행된 컨테이너들을 대상으로 실행되고 있는 이미지들만 보여줌
  • docker-compose push
    • docker hub로 이미지들을 푸시
    • 앞에 account id가 있는 내가 만든 이미지들만 푸시됨

docker-compose로 소프트웨어 시작과 중단

  • docker-compose up # build -> create -> start로 구성되어 있음
    • docker-compose create
    • docker-compose start
  • docker-compose down 
    • stop을 한 후 rm을 진행
  • docker-compose stop
  • docker-compose rm
  • docker-compose ls
    • docker-compose로 실행한 그룹을 그룹별로 보여줌
  • docker-compose ps
    • docker-compose로 실행된 컨테이너들의 상태를 보여줌

docker-compose 네트워킹

  • docker끼리 네트워크 연결이 필요한 경우
    • services에 준 이름으로 호스트 이름이 생성됨
    • 내부에 DNS 서버가 하나 생성되어 이름을 내부 IP로 변환해줌
  • 별도로 네트워크를 구성하고 싶다면
    • networks에 네트워크를 나열하고 네트워크를 적절하게 서비스에 지정해주어야 함
  • docker network ls

docker-compose.yml 문법 

강의를 들어도 문법이 이해가 안 가서 찾아보던 중 기똥찬 영상을 하나 발견했다.

생활코딩은 설명을 정말 잘하는 개발 관련 유튜브인데 docker에 대해서도 찍으셔서 들어보니 이해가 바로 됐다.. good.. 

강사님 강의 듣고 아래 영상을 복습 개념으로 보면 학습에 큰 도움이 될 거 같다 :)

 

https://www.youtube.com/watch?v=EK6iYRCIjYs

docker compose.yml 문법

 

반응형