일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- docker
- BlockChain
- 백준
- Refactoring
- function
- 파이썬
- Kubernetes
- 동시성
- rust
- Network
- Container
- 전문가를 위한 파이썬
- RabbitMQ
- Fast API
- Ethereum
- 러스트
- 알고리즘
- IMAGE
- AWS
- fluent python
- Algorithm
- Python
- 이더리움
- 블록체인
- dockerfile
- 플랫폼
- 코어 이더리움 프로그래밍
- BAEKJOON
- Thread
- guru
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
[8] Docker Compose 본문
728x90
Docker Compose
Docker Compose란?
- docker compose란 다중 컨테이너 도커 어플리케이션을 정의하고 실행하기 위한 도구
- 컨테이너를 이용한 서비스의 개발과 CI를 위해 여러 개의 컨테이너를 하나의 프로젝트로서 다룰 수 있는 작업 환경을 제공
- 여러 컨테이너의 옵션과 환경을 정의한 파일을 읽어 순차적으로 컨테이너를 생성함
$ docker-compose up
Docker Compose 파일 작성하기
yml이 무엇일까
- YAML ain't markup language의 약자
- 일반적으로 구성 파일 및 데이터가 저장되거나 전송되는 응용프로그램에서 사용됨
- XML이나 json 포맷으로 많이 쓰였으나, 좀더 가독성있는 포맷으로 나타난게 yaml임
docker-compose.yml
$ docker-compose up
- ![Image]({{ site.baseurl }}/images/docker_compose.png)
- 컨테이너는 services로 감싸져있음
- 도커 컴포즈 파일은 버전을 명시해주어야 함
- 프로젝트 명을 명시하지 않으면, 컨테이너들은 현재 디렉토리 이름으로 시작하는 이름을 가지게 됨
- 버전 정의, 서비스 정의, 볼륨정의, 네트워크 정의 등 4가지 항목으로 구성
- 서비스 정의
- image
- 컨테이너 생성 시, 쓰일 이미지 이름 설정
- links
$ docker run --link
와 같음- 다른 서비스에 서비스명만으로 접근할 수 있도록 설정
- [SERVICE:ALIAS]로 접근 가능
- environment
$ docker run --env
와 같음
- command
- depends_on
- 명시된 컨테이너가 먼저 생성되고 실행됨
- links도 컨테이너의 생성 순서와 실행 순서를 정의하나, depends_on은 서비스 이름만으로도 접근 가능함
--no-deps
옵션으로 의존성이 없는 컨테이너를 생성 가능
- ports
- build
- 도커 파일에서 이미지를 빌드해 서비스의 컨테이너를 생성하도록 설정
- extends
- 다른 YAML이나 현재 YAML에서 서비스 속성을 상속받도록 설정
- image
- 서비스 정의
$ docker-compose config
명령어를 사용하여 yaml파일의 오타나 파일 포맷을 검사할 수 있음
version: "3" # 도커 컴포즈의 버전 <br>
services: # 이곳에 실행하려는 컨테이너들 <br>
redis-server: # 컨테이너 이름 <br>
image: "redis" # 해당 컨테이너에서 사용하려는 이미지 <br>
node-app: # 컨테이너 이름 <br>
build: . # 현 디렉토리에 있는 Dockerfile <br>
ports: # 포트맵핑 로컬포트: 컨테이너 포트 <br>
- "5000:8080" <br>
Docker Compose 명령어
$ docker-compose up
: 이미지가 없을 때 이미지를 빌드하고 컨테이너 시작$ docker-compose --build
: 이미지가 있든 없든 무조건 빌드하고 컨테이너 시작$ docker-compose -d --build
: 이미지 생성하고 컨테이너 시작 후 빠져나옴- docker ps 하면 컨테이너 실행중임을 확인할 수 있음
$ docker-compose scale {컨테이너명}=2
- 스케일링 가능
$ docker-compose -p {프로젝트 명} up -d
- 프로젝트 명을 설정함으로 제어할 프로젝트의 이름을 명시할 수 있음
$ docker-compose -p {프로젝트 명} ps
$ docker compose down
- 컨테이너 멈추기
스웜모드와 함께 사용하기 : STACK
- 스택
- YAML 파일에서 생성된 컨테이너의 묶음
- 스택을 생성하면, YAML 파일의 정의된 서비스가 스웜 모드의 클러스터에서 일괄적으로 생성됨
- 서비스가 스웜모드의 서비스로 변환된 것
docker-compose
가 아니라docker stack
으로 제어해야 함$ docker stack deploy -c docker-compose.yaml {stack명}
스택 명령어
$ docker stack ls
$ docker stack ps
$ docker stack rm
728x90
'Infra > Docker' 카테고리의 다른 글
[etc] 혼란스러운 도커 입문자에게 (2) | 2021.05.28 |
---|---|
[7] Docker Swarm (0) | 2021.05.28 |
[6] DockerDemon (2) | 2021.05.28 |
[5] Dockerfile (0) | 2021.05.28 |
[4] Docker 이미지 (0) | 2021.04.26 |
Comments