Docker 网络冲突

问题描述 投票:0回答:1

我有一个带有 Nginx 反向代理的 OpenProject 容器。我为他们创建了一个名为 proxy 的桥接网络。我可以在服务器域中调用 OpenProject 网页,但不能在工作站域中调用。也许我说得不太准确,抱歉。 问题是 Docker 子网 IP 与工作站的 IP 冲突。它们之间有重叠。 因此,由于获得不同的 IP,我在 /etc/docker 中创建了 daemon.json 文件。 (我在互联网上找到了这个建议。) 这是它的内容:

{
  "default-address-pools": [
    { "base": "10.0.2.0/18", "size": 24 }
  ]
}

我停止了容器并删除了所有 Docker 网络,然后重新启动了 Docker,并再次创建了 proxy 网络,但是当我再次启动 OpenProject 容器时,它停止了并显示以下消息:

来自守护程序的错误响应:未找到网络 7371a6c729f3143ad73b81ac505a726bacd28147ba38b4e1ad084eed7eafa785

所以,现在我不知道如何处理这个错误。

更新

OpenProject docker-compose.yml 文件引用这些网络:

networks:
  frontend:
  backend:
  proxy:
   external: true

在我尝试启动它后,这些网络正在运行:

NETWORK ID     NAME               DRIVER    SCOPE
c2712a814ce3   bridge             bridge    local
d1abf033bef1   compose_backend    bridge    local
e370558ece80   compose_default    bridge    local
916261afc4da   compose_frontend   bridge    local
24bb40d18154   host               host      local
75da711bd148   none               null      local
36832db7fcb2   proxy              bridge    local
docker ip
1个回答
0
投票

发生的情况是,如果您删除并重新创建所有网络,则已停止的容器现在会尝试将自身附加到不再存在的网络,即使它具有相同的名称。

您可以在

docker network ls
中看到代理网络的id:
36832db7fcb2
。现在使用
docker inspect [id of the container]
检查已停止容器的配置。如果网络 -> 代理下列出的
NetworkID
与您当前代理网络的 ID 不同,就是这种情况。

您可以首先将容器与这个不存在的网络分离来解决此问题:

docker network disconnect proxy [container-id]

然后用

重新启动容器

docker start [container-id]

现在,如果它启动了,您可以使用以下命令将其重新连接到网络:

docker network connect proxy [container-id]

© www.soinside.com 2019 - 2024. All rights reserved.