it-swarm.dev

找不到Docker网络

在我们的团队中,我们正在转换到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>

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

Error response from daemon: network <id> not found

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

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

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

我真的很感激任何帮助!

15
borchero

听起来很像 这个问题

Stack 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
1
Julio Daniel Reyes

您始终可以使用docker system Prune -a来删除旧网络。这不会删除您的卷。
下次docker-compose up --build -d需要更长的时间,但它会让你超越当前的问题。

0
fcnorman