Docker Swarm Init 失败:地址已在使用中

Rob*_*ley 5 docker docker-compose

我一直在浏览https://docs.docker.com/v17.12/get-started/part3/#take-down-the-app-and-the-swarm 上的 docker 教程,并且我已经完成了部分我们在哪里设置我们的初始 docker swarm。

起初我有这个工作,但后来不得不调和我的系统上asnap 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
Run Code Online (Sandbox Code Playgroud)

我没有其他 docker 镜像或服务在运行,所以我可以杀死或删除任何东西,但我似乎无法弄清楚如何清除这个端口以便我可以初始化一个新的群。

有没有办法 A)杀死正在运行的群体,或 B)列出可用的群体,以便我可以加入它,然后作为群体主从那里杀死它?

谢谢!

cod*_*ion 7

似乎您已经从 snap/apt 安装了 docker,并且您必须卸载两者之一(一个在 swarm 模式下运行,而 docker 客户端正在连接到另一个不是)。

要查找运行 swarm 的进程,请使用以下命令:

sudo ss --tcp --listening --processes --numeric | grep ":2377"
Run Code Online (Sandbox Code Playgroud)

这将列出侦听端口 2377 的进程,就我而言,我发现:

LISTEN   0      128     *:2377     *:*    users:(("dockerd",pid=1229,fd=24))
Run Code Online (Sandbox Code Playgroud)

现在使用 pid 可以找到进程位置:

sudo readlink -f /proc/1229/exe
Run Code Online (Sandbox Code Playgroud)

如果该过程来自 asnap那么您知道您必须停止它并删除 snap 以便它只留下来自 apt-get 的安装(如果您想保留 snap 安装,则 viseversa )。