Docker Compose
VxLan을 사용하여 물리적으로 떨어진 가상머신과 통신한다. Docker 도 VxLan을 사용하여 통신.
- 상단의 가상 네트워크를 오버레이 네트워크라하고 물리적인 레거시 네트워크를 언더레이라고 한다.
- Overlay통신을 위해서 Service Discovery을 사용하고 Underlay 통신을 위해 Bridge를 사용한다.
- Overlay는 VxLan 기술을 사용한다.
- Compose는 동일 호스트에서 여러개 서비스를 배포해서 사용할때 사용
- WebService 관점에서 몇개의 컨테이너가 같이 움직일 수 있다. 단, 호스트 하나에 있어야 한다.
- Swarm은 멀티 호스트로 여러개의 컨테이너를 하나처럼 관리한다.
- Compose의 새로운 개념이 하나 더 나왔는데 Stack 이라는 개념이다.
- 묶음 단위로 여러 호스트에 배포 할 수 있다.
- YAML을 가지고 배포
* 설치
#curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose #chmod +x /usr/local/bin/docker-compose |
예제> https://docs.docker.com/compose/wordpress/
* YAML(YAML Ain't Markup Language)
* Docker Compose YAML 파일
docker-compose up 으로 실행
- compose 파일의 기본 경로와 이름: 현재 디렉토리의 docker-compose.yml (-f 옵션 사용 가능) - |
- docker run -p 80:80 nginx를 yaml로 만들어보자.
version:'2' service: web: image:nginx port: - "80:80" |
- docker-compose ps 명령은 해당 프로젝트 폴더에서 해야 한다.
* build
빌스시간에 적용할 구성 옵션
build: ./dir build: context: ./dir //dockerfile directory dockerfile:Dockerfile-alternate // dockerfile 이름 args: buildno: 1 |
* context는 path 등 사용.
* image: image이름과 tag
* deploy : version 3에서만 사용
- swarm을 구성하는데 사용
replicated: replica의 개수에 따라 docker 에 적용
- replica 6 에 호스트가 3개이면 호스트에 2개씩 배포
global: 모든 호스트에 하나씩 배포
* placement: 키-밸류가 맵핑이 되는 놈만 배포
* Update_config
* secrets는 swarm mode에서만 지원
* docker-compose down하면 제거 한다. (volume은 안지운다.)
* 특정 service만 먼저 올릴수도 있다.
* 특정 service 만 시작/정지 시킬 수도 있다.
* scale하면 port가 맵핑되어 있어 안된다.
* db 는 port 맵핑이 없어 된다.
* Compose 파일 확장하기
- 2개 파일을 실행할 수 있다.
- 새로운 compose 파일이 필요하면 2번째 파일을 확장한다.
- 없는건 머지, 있으면 2번째 파일이 우선권을 가진다.
# docker-compose -f docker-compose.yml -f docker-compose-prod.yml up |
- 파일이 두개이면 docker-compose.yml과 docker-compose.override.yml로 지정하면 자동으로 머지 한다.
* config 옵션을 사용하여 전체 결과를 미리 알아볼 수 있다.
|
* Docker 스택과 DAB(distributed application bundles)
#docker-compose bundle |
자동으로 변환해준다.
* docker stack을 사용하여 swarm 의 compose를 배포 할 수 있다.
- swarm mode가 on 되어 있어야 한다.
'디지털 양피지 > Docker' 카테고리의 다른 글
6. Kubernetes (0) | 2017.06.30 |
---|---|
5. Docker Swarm (0) | 2017.06.29 |
4. Docker 네트워킹 (0) | 2017.06.28 |
4. 컨테이너 스토리지 (0) | 2017.06.28 |
4. 컨테이너 관리 (0) | 2017.06.28 |