未找到Docker网络

frebpwbc  于 2023-04-05  发布在  Docker
关注(0)|答案(9)|浏览(219)

在我们的团队中,我们目前正在过渡到Docker,以便在我们的服务器上部署所有内容。
我们正在使用Docker Swarm和多个(10+)compose文件定义大量(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>

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

Error response from daemon: network <id> not found

更奇怪的是,docker network inspect <id>返回正常输出。网络始终是overlay网络,这些网络是使用用于部署堆栈的compose文件创建的。目前,我们的Swarm中只有一个节点。
我们目前的“解决方案”是重启Docker(这解决了问题),但这在生产环境中并不是一个可行的解决方案。离开swarm并再次加入它也不能解决问题。
起初,我们认为这个问题只与Docker for Mac有关(因为我们第一次在本地机器上遇到这个问题),然而,在Debian Stretch上也出现了同样的问题。在这两种情况下,我们都使用最新的Docker发行版。
我真的很感激任何帮助!

hs1rzwqc

hs1rzwqc1#

如果你试图添加一个容器到一个不再存在的现有网络,那么你可以使用docker-compose up --force-recreate。我发现这个GitHub问题评论是一个有用的概述。

lskq00tm

lskq00tm2#

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

nr7wwzry

nr7wwzry3#

在使用docker prune命令后,我无法在网络上启动docker容器。
以下错误说明:

**错误:for jekyll-serve无法启动服务jekyll-serve:网络b52287167 caf 352 c7 a03 c4 e924 aaf 7 d 78 e2 bc 372 c703560 c 003 acc 758 c 013432未找到错误:**启动项目时遇到错误。

docker system prune使我能够再次开始使用docker-compose up
更多信息:https://docs.docker.com/config/pruning/

2g32fytz

2g32fytz4#

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

检查我们无法删除的网络

docker network inspect <id> or <name>

断开网络

docker network disconnect -f <networkID> <endpointName> or <endpointId>

删除未使用的网络

docker network prune
x759pob2

x759pob25#

这听起来就像this issue
Stack rm之后的stack deploy“太快”将争用网络的创建/删除,可能还有其他堆栈资源。
该问题至今仍未解决(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
q3aa0525

q3aa05256#

我无法通过前面的答案中的任何方法摆脱网络。
这对我很有效。

systemctl restart docker
bzzcjhmw

bzzcjhmw7#

这是我得到的经验,我认为它可能会有所帮助。Docker网络能够进行桥接。当然,容器可以断开连接并从一个连接到另一个。如果一个从当前断开连接并连接到另一个,并且由于关机/网络修剪而导致当前消失,则独立容器将失去连接。后来,当您尝试启动时,只发现“network not found”错误。
解决这个问题的方法是启动swarm/cluster(在我的例子中,我使用docker-compose up启动),使用force(-f)从该网络断开容器(即使它还在运行)。连接回该(不同ID,但相同名称)网络。现在你可以成功启动它而不会出现“network not found”错误。所以,关键是它可能碰巧看到相同名称和不同ID的网络。

bn31dyow

bn31dyow8#

对我来说,它有助于使用

docker network connect existingNetwork container

对于所有网络失败的容器,似乎没有其他对我有帮助,因为它们似乎被隐含地连接到一个不存在的网络,这里提到断开它们dindt帮助只重新/连接到现有的,并删除网络,不存在的最终在一个错误“无法删除一个不存在的网络”ofc

xsuvu9jc

xsuvu9jc9#

旧的容器还在使用旧的网络。可能你删除了网络,但忘记了rm旧的容器。只要删除旧的容器,创建你的网络,然后重新构建。

相关问题