1. root@manager:~# docker swarm init

    root@manager:~# docker swarm init
    Swarm initialized: current node (paulxq7r9czggtra5xu8006hk) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        **docker swarm join --token SWMTKN-1-2xztx445xtzsj98s3p6men855x9cz5y00kalg3xc3rm4go9g18-e9fxhbcrfg73l8sqonzdtxyhu 211.183.3.200:2377**
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    

    저 token이 있는 node만 manager의 관리 대상이 된다. (init할 때마다 새로 발행됨)

  2. root@worker1:~# docker swarm join --token SWMTKN-1-2xztx445xtzsj98s3p6men855x9cz5y00kalg3xc3rm4go9g18-e9fxhbcrfg73l8sqonzdtxyhu 211.183.3.200:2377

    root@worker1:~# docker swarm join --token SWMTKN-1-2xztx445xtzsj98s3p6men855x9cz5y00kalg3xc3rm4go9g18-e9fxhbcrfg73l8sqonzdtxyhu 211.183.3.200:2377
    This node joined a swarm as a worker.
    
  3. root@worker2:~# docker swarm join --token SWMTKN-1-2xztx445xtzsj98s3p6men855x9cz5y00kalg3xc3rm4go9g18-e9fxhbcrfg73l8sqonzdtxyhu 211.183.3.200:2377

    root@worker2:~# docker swarm join --token SWMTKN-1-2xztx445xtzsj98s3p6men855x9cz5y00kalg3xc3rm4go9g18-e9fxhbcrfg73l8sqonzdtxyhu 211.183.3.200:2377
    This node joined a swarm as a worker.
    
  4. root@manager:~# docker node ls

    root@manager:~# docker node ls
    ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
    paulxq7r9czggtra5xu8006hk *   manager    Ready     Active         Leader           20.10.21
    x19neym6sw4hijutdxkgzjhd2     worker1    Ready     Active                          20.10.21
    k4hmjn37x6wmwv5xnar2lkvm9     worker2    Ready     Active                          20.10.21
    

    worker1과 worker2가 clustering되어 manager의 orchestration 대상이 된다.

    join 해제는 docker swarm leave로 한다.

  5. root@manager:~# docker network ls

    root@manager:~# docker network ls
    NETWORK ID     NAME              DRIVER    SCOPE
    1b25c959ba21   bridge            bridge    local
    5b52fc9edfc4   docker_gwbridge   bridge    local
    0e1c0dbcab96   host              host      local
    ji03bjprzpxy   ingress           overlay   swarm
    c109c70bf824   none              null      local
    
  6. root@manager:~# docker node inspect worker1

  7. root@manager:~# docker service create --replicas 2 -p 5555:80 --name web nginx

    root@manager:~# docker service create --replicas 2 -p 5555:80 --name web nginx
    aq2udr807dwwnv41onjccqz3c
    overall progress: 2 out of 2 tasks 
    1/2: running   
    2/2: running   
    verify: Service converged
    
  8. root@manager:~# docker service ls

    root@manager:~# docker service ls
    ID             NAME      MODE         REPLICAS   IMAGE          PORTS
    aq2udr807dww   web       replicated   2/2        nginx:latest   *:5555->80/tcp
    
  9. 브라우저 접속: http://211.183.3.200:5555/

    Untitled

  10. root@manager:~# docker service scale web=4

    root@manager:~# docker service scale web=4
    web scaled to 4
    overall progress: 4 out of 4 tasks 
    1/4: running   
    2/4: running   
    3/4: running   
    4/4: running   
    verify: Service converged
    

    2개는 이미 동작 중이므로 2개만 새로 prepare한다.

  11. root@manager:~# docker login root@worker1:~# docker login root@worker2:~# docker login

    root@manager:~# docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to <https://hub.docker.com> to create one.
    Username: beyondthemist
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    <https://docs.docker.com/engine/reference/commandline/login/#credentials-store>
    
    Login Succeeded
    

    로그인이 안 되어 있으면 traffic 제한이 생긴다. 이 경우 image를 못 받아 올 수 있으므로 안전빵으로 로그인하는 게 좋다.

  12. root@manager:~# docker service rm web root@manager:~# docker service ls

    root@manager:~# docker service rm web
    web
    root@manager:~# docker service ls
    ID        NAME      MODE      REPLICAS   IMAGE     PORTS
    
  13. root@manager:~# docker service create --name web --constraint node.rol1!=manager --replicas 4 nginx

    root@manager:~# docker service create --name web **--constraint node.role!=manager** --replicas 4 nginx
    ns3beibwav1f2trhhojvlurz8
    overall progress: 4 out of 4 tasks 
    1/4: running   
    2/4: running   
    3/4: running   
    4/4: running   
    verify: Service converged
    
  14. root@manager:~# docker service create --name gweb --mode global nginx

    root@manager:~# docker service create --name gweb **--mode global** nginx
    phti24w9zporupb5ti51882qh
    overall progress: 3 out of 3 tasks 
    x19neym6sw4h: running   
    k4hmjn37x6wm: running   
    paulxq7r9czg: running   
    verify: Service converged