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 |