(Docker) 4. Stacks

docker-machine start $(docker-machine ls -q)
를 입력하여 도커머신들을 띄우자

Swarm?

스웜도커를 실행하는 머신들의 클러스터이며 애플리케이션을 배포할 수 있다. 컨테이너를 실행하고 여러머신에서 실행할 수 있다.

Stack?

이번에는 구조중 가장 맨위에 있는 스택을 다루겠다. 스택의존성을 공유하고 있는 관련있는 서비스들의 집합이다. 스택은 전체 어플리케이션과 어떻게 조화를 이루어야하는지 짤 수 있다. 복잡한 어플리케이션의 경우 여러개의 스택을 사용할 수 있다.

docker-machine ssh myvm1 “docker swarm init –advertise-addr <myvm1의 ip>”
을 입력하여 스웜 매니저로 띄워주자
위를 입력하면 docker swarm join –token …..이라고 출력되는데 이는 스웜에 워커를 추가하고 싶으면 이렇게 입력하라는 것이다,

두번째 머신에 아래와 같이 입력하여 워커를 추가하자
docker-machine ssh myvm2 “위에서 출력된값 복붙”

이제 머신 두개를 띄웠다.
즉 스웜 매니저, 워커로 띄움

여러개의 멀티 머신에서 띄워보자.

yml 파일을 아래와 같이 수정하자.
이전것에서 visualizer 라는 서비스가 추가됨.
추가된것은 호스트에 있는 파일을 컨테이너 안에다 집어넣어놨다.(dockersamples/visualizer:stable 안에 /var/run/docker.sock:/var/run/docker.sock 파일 넣음)

default
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
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "80:80"
networks:
- webnet
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:

docker-machine ev myvm1
을 입력하여 매니저와 연결하자.

docker stack deploy -c docker-compose.yml getstartedlab
를 입력하자. (이는 myvm1에서 실행하는것이다.)

docker-machine ls를 입력하여 머신의 ip를 입력하고 8080포트로 접속해보자.

아래를 입력하여 레디스를 추가하자

default
1
2
3
4
5
6
7
8
9
10
11
12
13
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet

docker stack deploy -c docker-compose.yml getstartedlab
를 입력하여 디플로이 하자.

레디스는 매니저에서만 실행되므로 동일한 파일 시스템을 쓴다.(워커것과 섞이지 않음)
영속화를 위해 볼륨파일을 로컬에서 갖다 쓰고 매니저에서만 돌린다.

docker service ls
를 입력해서 돌아가고 있는 서비스를 확인해보자.

docker container ls
를 입력해서 각 떠있는 컨테이너들을 확인하자.

Deploy

배포하는 방법은 CE(Cloud Provider),Enterprise(Cloud provier), Enterprise(On-Premise)가 있다

도커 클라우드를 써서 앱을 관리할 수 있다.
외부 클라우드에 배포하는 방법을 알아보자.

도커 클라우드는 스탠다드모드, 스웜모드로 쓸 수 있다.

Share