在我们的团队中,我们目前正在过渡到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发行版。
我真的很感激任何帮助!
9条答案
按热度按时间hs1rzwqc1#
如果你试图添加一个容器到一个不再存在的现有网络,那么你可以使用
docker-compose up --force-recreate
。我发现这个GitHub问题评论是一个有用的概述。lskq00tm2#
您可以随时使用
docker system prune -a
来摆脱旧网络。这不会删除您的卷。下一次
docker-compose up --build -d
会花更长的时间,但它会让你克服当前的问题。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/
2g32fytz4#
删除docker中的“网络找不到”
检查我们无法删除的网络
断开网络
删除未使用的网络
x759pob25#
这听起来就像this issue。
Stack rm之后的stack deploy“太快”将争用网络的创建/删除,可能还有其他堆栈资源。
该问题至今仍未解决(docker/cli),但您可以尝试建议的解决方法:
q3aa05256#
我无法通过前面的答案中的任何方法摆脱网络。
这对我很有效。
bzzcjhmw7#
这是我得到的经验,我认为它可能会有所帮助。Docker网络能够进行桥接。当然,容器可以断开连接并从一个连接到另一个。如果一个从当前断开连接并连接到另一个,并且由于关机/网络修剪而导致当前消失,则独立容器将失去连接。后来,当您尝试启动时,只发现“network not found”错误。
解决这个问题的方法是启动swarm/cluster(在我的例子中,我使用docker-compose up启动),使用force(-f)从该网络断开容器(即使它还在运行)。连接回该(不同ID,但相同名称)网络。现在你可以成功启动它而不会出现“network not found”错误。所以,关键是它可能碰巧看到相同名称和不同ID的网络。
bn31dyow8#
对我来说,它有助于使用
对于所有网络失败的容器,似乎没有其他对我有帮助,因为它们似乎被隐含地连接到一个不存在的网络,这里提到断开它们dindt帮助只重新/连接到现有的,并删除网络,不存在的最终在一个错误“无法删除一个不存在的网络”ofc
xsuvu9jc9#
旧的容器还在使用旧的网络。可能你删除了网络,但忘记了rm旧的容器。只要删除旧的容器,创建你的网络,然后重新构建。