问题

执行以下命令:

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 失败。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐