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
반응형