[Docker] Docker Compose_TIL

Docker-compose.yml 구성

- 다양한 버전이 존재하는데 본 블로그는 v2와 v3가 합쳐진 버전 사용 기준으로 설명함

- services: 다음으로 프로그램을 구성하는 서비스들을 지정

  • 각 서비스는 별개의 Docker Image 지정과 Docker Container 실행으로 구성됨
  • 즉, 각 서비스는 자신의 Dockerfile을 갖고 있어야함 아니면 Docker hub등에서 이미지를 다운로드
  • 서비스별로 포트번호, 환경변수, 디스크 볼륨등을 지정해야함
  • 서비스 이름은 아무 이름이나 가능

- volumes: servieces 에서 사용할 docker volume들을 지정 (해당 내용을 지정해줘야 services에서 사용가능)

- networks: servieces 에서 사용할 network들을 지정 (해당 내용을 지정해줘야 services에서 사용가능)

 

Docker-compose vs. docker compose 명령어

- v1: docker-compose

- v2: dockeer compose

- Docker 1.27 부터 docker에 명령으로 compose가 추가됨

  • docker-compose 보다는 docker compose를 쓰는 것이 더 좋음
  • 별도의 docker-compose를 설치할 필요가 없음. 하지만 아직까지 대부분의 문서가 docker-compose중심으로 만들어져 있으나 기능은 동일

Docker-compose.yaml vs. docker compose.yml 명령어

- docker compose 명령 시 둘 중의 하나를 찾음 (둘 다 존재하면 에러 발생)

- 다른 이름의 파일을 사용하고 싶다면 -f 옵션 사용

docker-compose -f docker-compose.mac.yml up

 

Docker-compose.yml 작성 예

 

Docker-compose 명령어 정리

docker-compose build

  • build키로 지정된 것들을 대상
  • 공식 이미지가 아닌경우 폴더이름 + 이미지이름 으로 repository가 설정됨

docker-compose pull

  • docker hub에서 이미지들을 읽어오려고 함

docker-compose images

  • docker-compose에 의해 실행되고 있는 이미지들만 보여줌

docker-compose push

  • docker-compose로 buil or pull했던 이미지를 docker hub로 push됨

docker-compose up (build => create => start)

  • docker-compose 실행

docker-compose stop

  • 실행되고 있는 컨테이너를 중단

docker-compose rm

  • 실행되고 있는 컨테이너 삭제

docker-compose down

  • docker container를 stop과 remove를 진행

 

Docker-compose 네트워킹

- docker끼리 네트워크 연결이 필요한 경우

  • services에 준 이름으로 호스트 이름이 생성됨
  • 내부에 DNS서버가 하나 생성되어 이름을 내부 IP로 변환해줌

- 별도로 네트워크를 구성하고 싶다면

  • network에 네트워크를 나열하고 네트워크를 적절하게 서비스에 지정해주어야함

- docker network ls: 현재 구성된 network를 볼 수 있는 명령어

'Programmers TIL' 카테고리의 다른 글

[Airflow] Airflow 기타 기능 _TIL  (1) 2023.06.21
[K8s] Kubernetes(K8s)_TIL  (1) 2023.06.16
[Docker] Docker Volume_TIL  (0) 2023.06.14
[Docker] Docker 명령 정리_TIL  (0) 2023.06.14
[Docker] Docker 개발 프로세스_TIL  (3) 2023.06.12