2019. 6. 7. 04:32ㆍ[정리] 기능별 개념 정리/Docker
서비스 = docker-compose.yml 안에 존재하는 하나의 이미지 정보
스택 = docker-compose.yml
1강, 2강에서는 하나의 서비스를 사용했었다.
그런데 app.py 프로젝트는 Redis 를 필요로하고 그래서 redis를 추가해서 배포하고자 한다.
도커 스웜을 시각화해주는 Visualizer 이미지 추가하기
docker-compose.yml 을 수정한다.
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: kok202/myRepository:v1.0.0
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "80:80"
networks:
- webnet
# 클러스터 환경을 확인할 수 있는 gui 툴
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
visualizer를 추가했다.
* mac 의 경우 docker.sock에 바로 접속할 수 없는 문제가 있고 이에대한 해결법은 강의를 참조한다. (약 10분 부터)
https://www.youtube.com/watch?v=X--WPFfSbFc&list=PLfI752FpVCS84hxOeCyI4SBPUwt4Itd0T&index=3
eval $(docker-machine env myvm1)
세션을 docker swarm 에 연결한다.
docker stack deploy -c docker-compose.yml myApplication
docker-compose.yml 을 배포한다.
http://192.168.99.100:8080
에 접근해서 visualizer 가 동작하는지 확인한다.
docker-compose.yml 에 레디스 이미지도 추가하기
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: kok202/myRepository:v1.0.0
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "80:80"
networks:
- webnet
# 클러스터 환경을 확인할 수 있는 gui 툴
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
# app.py 에서 redis를 사용하고 있어서 추가합니다.
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:
레디스가 포함된 docker-compose.yml 을 재배포한다.
docker stack deploy -c docker-compose.yml myApplication
레디스는 인메모리 DB 인데 이 때문에 재배포할 때마다 데이터가 사라진다. DB 에 데이터를 영속화 하기 위해서 volumes, deploy 정보가 들어가있다.
1. 볼륨을 맵핑해서 redis 데이터가 영속화 되는 경로를 동일한 경로에 저장하도록 하였다.
2. 배포되는 곳을 host 로 고정한다.
현재까지 진행한 프로젝트 정리
docker swarm 에는 2개의 가상 머신이 동작하고 있다.
docker-compose.yml 이라는 스택에는 3개의 서비스가 들어가있다.
- web 이라는 서비스 1개
- visualizer 라는 서비스 1개
- redis 라는 서비스 1개
web 이라는 서비스는 kok202/myRepository:v0.0.1 이미지를 사용한다.
visualizer 이라는 서비스는 dockersamples/visualizer:stable 이미지를 사용한다.
redis 이라는 서비스는 redis 이미지를 사용한다.
'[정리] 기능별 개념 정리 > Docker' 카테고리의 다른 글
Docker-compose fixed network IP (0) | 2019.08.28 |
---|---|
도커 강의 정리 ( 2강 : 서비스, 클러스터 (Swarm) ) (0) | 2019.06.07 |
도커 강의 정리 ( 1강 : 이미지 (Dockerfile) ) (0) | 2019.06.07 |
docker-compose.yml (0) | 2019.03.26 |
[2019.03.05] Docker-machine (0) | 2019.03.05 |