找不到Docker网络

bor*_*ero 25 docker docker-swarm docker-networking

在我们的团队中,我们正在转换到Docker以在我们的服务器上部署所有内容.

我们使用Docker Swarm和多个(10+)撰写文件来定义大量(20+)服务.到目前为止,一切都运行良好,除非我们使用docker stack rm <name>(并重新部署使用docker stack deploy <options> <name>)取下堆栈:大约每隔一次,我们会收到以下错误:

Failed to remove network <id>: Error response from daemon: network <id> not foundFailed to remove some resources from stack: <name>
Run Code Online (Sandbox Code Playgroud)

使用时docker network ls,网络确实没有被删除,但是,docker network rm <id>总是导致以下结果:

Error response from daemon: network <id> not found
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,docker network inspect <id>返回正常输出的事实.网络始终overlay是使用用于部署堆栈的撰写文件创建的网络.目前,我们的Swarm中只有一个节点.

我们当前的"解决方法"是重新启动Docker(解决问题),但这在生产环境中不是可行的解决方案.离开群并再次加入它也不能解决问题.

起初,我们认为这个问题只与Docker for Mac有关(因为我们第一次遇到本地机器上的问题),但Debian Stretch也出现了同样的问题.在这两种情况下,我们都使用最新的Docker发行版.

我真的很感激任何帮助!

Jin*_*alu 16

删除docker中的“未找到网络”

检查我们无法删除的网络

docker network inspect <id> or <name>
Run Code Online (Sandbox Code Playgroud)

断开网络

docker network disconnect -f <networkID> <endpointName> or <endpointId>
Run Code Online (Sandbox Code Playgroud)

删除未使用的网络

docker network prune
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。我自动化了这个解决方案,并在每次有幽灵网络时触发它。工作得很好。 (2认同)

小智 10

使用 docker prune 命令后,我无法在网络上启动 docker 容器。

以下错误指出:

错误:对于 jekyll-serve 无法启动服务 jekyll-serve:网络 b52287167caf352c7a03c4e924aaf7d78e2bc372c703560c003acc758c013432 未找到 错误:启动项目时遇到错误。

docker system prune 使我能够docker-compose up再次开始使用。

更多信息在这里:https : //docs.docker.com/config/pruning/


Ash*_*him 10

我无法通过之前答案中的任何方法摆脱网络。

这对我有用。

systemctl restart docker
Run Code Online (Sandbox Code Playgroud)


fcn*_*man 8

您始终可以使用它docker system prune -a来摆脱旧的网络。这不会删除您的卷。
docker-compose up --build -d下一次将花费更长的时间,但是它将使您摆脱当前的问题。

  • `docker system prune -a` 将删除所有现有的映像和容器。不使用! (9认同)

Jul*_*yes 5

这听起来很像这个问题

堆栈 rm 跟随着堆栈部署“太快”将竞争创建/删除网络,可能是其他堆栈资源。

截至今天,该问题仍然存在(docker/cli),但您可以尝试建议的解决方法:

until [ -z "$(docker service ls --filter label=com.docker.stack.namespace=$COMPOSE_PROJECT_NAME -q)" ] || [ "$limit" -lt 0 ]; do
  sleep 1;
done

until [ -z "$(docker network ls --filter label=com.docker.stack.namespace=$COMPOSE_PROJECT_NAME -q)" ] || [ "$limit" -lt 0 ]; do
  sleep 1;
done
Run Code Online (Sandbox Code Playgroud)

  • 它运行了大约 10 分钟,但没有完成。当我运行 `docker network ls` 时,在移除堆栈后 30 分钟后,其中一个网络仍然可见。但我想目前似乎没有解决问题的方法(根据您链接的问题)。 (3认同)

小智 5

如果您尝试将容器添加到已不存在的现有网络中,则可以使用docker-compose up --force-recreate。我发现此GitHub问题评论是有用的概述。

  • 这对我有用! (3认同)
  • 这并没有解决 Docker 版本 20.10.14(内部版本 a224086)上的问题。 (2认同)