从 docker compose has active endpoints 错误看 docker 的私网管理
·
问题
执行以下命令:
docker compose down
结果遇到类似下面的提示:
⠿ Network xxx_default Error 0.0s
failed to remove network xxx_default: Error response from daemon: error while removing network: network xxx_default id
aaecc52dd996bf33b7f2dabc441d395958854efb4f41cd327b7b8c6733839882 has active endpoints
解决方案
使用以下命令先确认网络是不是还存在:
docker network ls
使用以下命令查看网络被谁在使用:
docker network inspect xxx_default
然后使用以下命令可以强行删除这个网络
docker network rm -f xxx_default xxx_container
xxx_container 就是正在使用这个网络的容器。要注意的是,这种强行删除可能会导致正在运行的容器出现运行时错误,因为被依赖的网络没有了可能会导致网络访问异常。
问题的原因
在一个 docker compose 文件中的服务会默认共享一个私网,但是也可以指定使用别人已有的网络。
导致我遇到上述问题额原因是有一个第三方的 docker compose 启动的应用使用了我的网络,想监听我的网络里的一些事件。它的程序的 docker compose 文件有如下的代码:
networks:
default:
external:
name: xxx_default
这个程序依赖了我的 xxx_default,导致我在使用 docker compose down 命令的时候因为不能停止 xxx_default 网络而失败。
总结
本文讨论了解决 docker compose 因为存在 active endpoints 而不能停止的原因和解决方案。在一个 docker compose 文件中的服务会默认共享一个私网,但是也可以指定使用别人已有的网络。如果有其他的 docker compose 文件使用了你的网络就可能导致你的 docker compose down 失败。
更多推荐
所有评论(0)