vm 깔고, docker swarm 사용할 때 이미 host 가 manager node 일 경우 아래 순서로 명령어를 수행

 

HOST$ docker swarm leave

VM$ docker swarm init

 

하면, 아래처럼 기존 컨테이너가 실행중인데 사라지는 현상 (데몬이 실행중인 컨테이너를 잡지 못함)

 


$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES

 

$ ps -ef | grep docker
root     11775     1  0 18:24 ?        00:00:01 dockerd -G docker --exec-root=/var/snap/docker/384/run/docker --data-root=/var/snap/docker/common/var-lib-docker --pidfile=/var/snap/docker/384/run/docker.pid --config-file=/var/snap/docker/384/config/daemon.json --debug
root     11868 11775  0 18:24 ?        00:00:00 docker-containerd --config /var/snap/docker/384/run/docker/containerd/containerd.toml
root     12136     1  0 18:24 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root     12730  6303  0 18:27 pts/2    00:00:00 grep --color=auto docker
root     15881 12110  0 Jun05 ?        00:00:03 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/ce80ad93f1eb809a35d7fc32ebf0647444b8e1a9dc6f874fdd4ac7af040626d8 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root     15981 12110  0 Jun05 ?        00:00:03 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/dc1cf4cc07a493748ee3b5f9b30a04fa0baac9403ddf30f7d4c140f8edf53579 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root     16138 12110  0 Jun05 ?        00:00:03 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/ecd5eab98011da7d79fa45137b6f9af8365dc1cfc4f13338b3bc51d3bb5614d4 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc


라고 뜨는 경우 즉, 컨테이너가 실행중인데 없다고 뜨는 경우 원래 매니저 노드에서 leave 명령어로 스왐모드 해제해도 위의 상황이 반복

 

+ docker service ls 또는 docker node ls 처럼 manager node 일 때 사용가능한 명령어도 사용못하는 상태

 

ㅅㅂ

 

스왐을 실행하고 있는 프로세스가 아직 있기 때문이다.

따라서 2377 포트를 사용하고 있는 프로세스를 찾아서 죽이면 된다.

 

$ sudo ss --tcp --listening --processes --numeric | grep ":2377"

$ sudo readlink -f /proc/<PID>/exe      또는 $ kill -9 <PID>

 

참고: https://stackoverflow.com/questions/53547308/docker-swarm-init-fails-address-already-in-use

 

Docker Swarm Init Fails: Address already in use

I've been going through the docker tutorial at https://docs.docker.com/v17.12/get-started/part3/#take-down-the-app-and-the-swarm and am up to the part where we're setting up our initial docker swar...

stackoverflow.com

 

이제 된다;

 

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ecd5eab98011        nginx:1.13          "nginx -g 'daemon of…"   3 weeks ago         Up 2 days           0.0.0.0:80->80/tcp       backend_nginx_1
dc1cf4cc07a4        backend_djangoapp   "./ready.sh"             3 weeks ago         Up 2 days           8000/tcp                 backend_djangoapp_1
ce80ad93f1eb        test_db             "docker-entrypoint.s…"   6 weeks ago         Up 2 days           0.0.0.0:5432->5432/tcp   database1

 

 

으후; 심장아파

 

 

'DevOps > Docker' 카테고리의 다른 글

AWS + docker-machine 사용 시 주의사항  (0) 2019.06.08
docker container stop 안될 때 또는 docker-compose down 안될 때  (0) 2019.06.08
docker-machine 명령어  (0) 2019.05.29
docker swarm 명령어  (0) 2019.05.22
docker 명령어  (0) 2019.05.22

+ Recent posts