我一直在浏览 docker 教程 https://docs.docker.com/v17.12/get-started/part3/#take-down-the-app-and-the-swarm并且到了我们设置初始 docker swarm 的部分。
我一开始有这个工作,但后来不得不调和 snap install docker
之间的差异。和 apt install docker
在我的系统上。在此之后,当我尝试运行 docker swarm init
时有人告诉我:
Error response from daemon: manager stopped: failed to listen on remote API address: listen tcp 0.0.0.0:2377: bind: address already in use
我没有其他 docker 镜像或服务在运行,所以我可以杀死或删除任何东西,但我似乎无法弄清楚如何清除这个端口以便我可以初始化一个新的群。
有没有办法 A)杀死正在运行的群体,或 B)列出可用的群体,以便我可以加入它,然后作为群体主从那里杀死它?
谢谢!
最佳答案
似乎您已经从 snap/apt 安装了 docker,并且您必须卸载两者之一(一个在 swarm 模式下运行,而 docker 客户端正在连接到一个不是)。
要查找运行 swarm 的进程,请使用以下命令:
sudo ss --tcp --listening --processes --numeric | grep ":2377"
这将列出监听端口 2377 的进程,就我而言,我发现:
LISTEN 0 128 *:2377 *:* users:(("dockerd",pid=1229,fd=24))
现在使用 pid 可以找到进程位置:
sudo readlink -f /proc/1229/exe
如果进程来自
snap
那么你知道你必须停止它并移除 snap 以便它只留下来自 apt-get 的安装(如果你想保留 snap 安装,或者 viseversa)。
关于Docker Swarm 初始化失败 : Address already in use,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53547308/