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 파일 넣음)
1 | version: "3" |
docker-machine ev myvm1
을 입력하여 매니저와 연결하자.
docker stack deploy -c docker-compose.yml getstartedlab
를 입력하자. (이는 myvm1에서 실행하는것이다.)
docker-machine ls를 입력하여 머신의 ip를 입력하고 8080포트로 접속해보자.
아래를 입력하여 레디스를 추가하자
1 | redis: |
docker stack deploy -c docker-compose.yml getstartedlab
를 입력하여 디플로이 하자.
레디스는 매니저에서만 실행되므로 동일한 파일 시스템을 쓴다.(워커것과 섞이지 않음)
영속화를 위해 볼륨파일을 로컬에서 갖다 쓰고 매니저에서만 돌린다.
docker service ls
를 입력해서 돌아가고 있는 서비스를 확인해보자.
docker container ls
를 입력해서 각 떠있는 컨테이너들을 확인하자.
Deploy
배포하는 방법은 CE(Cloud Provider),Enterprise(Cloud provier), Enterprise(On-Premise)가 있다
도커 클라우드를 써서 앱을 관리할 수 있다.
외부 클라우드에 배포하는 방법을 알아보자.
도커 클라우드는 스탠다드모드, 스웜모드로 쓸 수 있다.