728x90
반응형
도커 컴포즈란 무엇이고, 이게 Dockerfile과 차이점에 대해 알아보자.
도커 컴포즈
- 명령어 입력에 익숙해져도 워드프레스처럼 여러 개의 컨테이너로 구성된 시스템을 실행하기는 귀찮다.
- 인자나 옵션도 많고, 볼륨이나 네트워크까지 설정해야 하고, 컨테이너 지우는 등 뒷정리도 번거롭다.
- 이렇듯, 시스템 구축과 관련된 명령어를 하나의 텍스트 파일에 기재해, 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구가 바로 도커 컴포즈다.
도커 컴포즈의 구조
- 시스템 구축에 필요한 설정을 YAML(YAML Ain't Markup Language) 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행(run) 또는 일괄 종료 및 삭제(down)할 수 있는 도구다.
- 정의 파일에는 컨테이너나 볼륨을 '어떠한 설정으로 만들지'에 대한 항목이 기재돼 있다.
- 작성 내용은 도커 명령어와 비슷하지만, 도커 명령어는 아니다.
- up 명령어( docker run 명령어와 비슷 )
- 정의 파일에 기재된 내용대로 이미지를 내려받고 컨테이를 생성 및 실행한다.
- 정의 파일에는 네트워크나 볼륨에 대한 정의도 기재할 수 있어서 주변 환경을 한번에 생성할 수 있다.
- down 명령어
- 컨테이너와 네트워크를 정지 및 삭제한다. 삭제 없이 종료만 하고 싶다면, stop 명령어를 사용한다.
- 볼륨과 이미지는 삭제하지 않는다.
도커 컴포즈와 Dockerfile 스크립트의 차이점
- 도커 컴포즈는 docker run 명령어를 여러 개 모아놓은 것과 같다. 또한 컨테이너와 주변 환경을 생성하고 네트워크와 볼륨까지 함께 만들 수 있다.
- Dockerfile 스크립트는 이미지를 만들기 위한 것으로 네트워크나 볼륨은 만들 수 없다.
- 쉽게 기억하려면, '만드는 대상이 다르다'고 기억하면 된다.
- 참고로, 도커 컴포즈에 컨테이너 관리 기능이 있다면, 그건 쿠버네티스이다.
도커 컴포즈를 사용하기 위한 준비 방법과 간단한 사용법을 익혀보자.
도커 컴포즈 설치
- 도커 컴포즈는 도커 엔진과 별개의 SW이고, 쿠버네티스 역시 도커 엔진과는 별개의 SW이다.
- 다만 도커 컴포즈는 도커 엔진과 큰차이가 없어, 도커 컴포즈로 생성한 컨테이너를 도커 엔진으로 똑가팅 관리할 수 있다. 명령어만 다를 뿐 거의 같은 SW나 다름없다.
- Windows나 macOS에서 사용하는 도커 데스크톱은 도커 컴포즈가 함께 설치된다.
- Linux에서는, 도커 컴포즈와 파이썬 3 런타임 및 필요 도구(python3, python3-pip 패키지)를 설치해야 한다.
- 도커 컴포즈는 파이썬으로 작성된 프로그램이기 때문에 파이썬 런타임이 필요하다
- 파이썬 3을 설치할 때는 apt 명령어, 도커 컴포즈를 설치할 땐 pip3 명령어를 사용해 설치한다.
- sudo apt install -y python3 python3-pip
- sudo pip3 install docker-compose
도커 컴포즈의 사용법
- Dockerfile 스크립트로 이미지를 만들 때처럼, 호스트 컴퓨터에 정의파일(YAML파일)을 배치한다.
- 정의 파일의 이름은 미리 정해진 docker-compose.yml 이라는 이름을 사용해야 한다.
- 다른 이름을 사용할 때는 인자로 이름을 지정해야 한다.
- 파일은 호스트 컴퓨터에 배치되지만, 명령어는 똑같이 도커 엔진에 전달되며 만들어진 컨테이너도 동일하게 도커 엔진 위에서 동작한다.
- 정의 파일은 한 폴더에 하나만 있을 수 있다.
- 그래서 여러 개의 정의 파일을 사용하려면, 그 개수만큼 폴더를 만들어야 한다.
- 컨테이너 생성에 필요한 이미지나 html 파일 역시 컴포즈가 사용할 폴더에 함께 둔다.
728x90
'docker & kubernetes' 카테고리의 다른 글
컨테이너 사용법 9 | Docker&Kubernetes 학습 32 (0) | 2024.12.14 |
---|---|
컨테이너 사용법 8 | Docker&Kubernetes 학습 31 (1) | 2024.12.14 |
컨테이너 사용법 6 | Docker&Kubernetes 학습 29 (3) | 2024.12.03 |
컨테이너 사용법 5 | Docker&Kubernetes 학습 28 (3) | 2024.12.01 |
컨테이너 사용법 4 | Docker&Kubernetes 학습 27 (0) | 2024.11.30 |