【问题标题】:ERROR: 2 matches found based on name: network <nameofservice>_default is ambiguous错误:根据名称找到 2 个匹配项:网络 <nameofservice>_default 不明确
【发布时间】:2022-04-11 01:00:52
【问题描述】:

我正在使用命令构建docker 图像

docker-compose -f "docker-compose.yml" up -d --build 

但它返回一个错误

ERROR: 2 matches found based on name: network officeconverter_default is ambiguous

这有点清楚,在我的机器中有两个同名的网络试图存在。

问题是如何从 docker 网络中删除网络

PS E:\repos\Github\officeconverter> docker network ls 网络 ID 名称 驱动程序范围 868c88a83bd6 桥接本地 92f7d20ed432 officeconverter_default 桥本地 3f96cfb7b591 officeconverter_default 网桥本地

【问题讨论】:

  • 我遇到了同样的问题。我通过同时运行相同的docker-compose -f &lt;DOCKER-COMPOSE-FILE&gt; up -d 命令来创建问题。顺便说一句,这是因为一个 jest 测试套件试图并行执行两个集成测试,其中集成测试的设置步骤是执行 docker compose。我可以通过运行docker network prune 来解决这个问题,但要小心,这可能会删除比你想要的更多的网络。这对我来说没问题,因为我在一台开发笔记本电脑上,没有任何重要的 WRT docker 配置。希望这会有所帮助

标签: docker docker-compose docker-network


【解决方案1】:

解决方法很简单!

只需删除网络。

点赞docker network rm &lt;network Id&gt; &lt;space&gt; &lt;network Id&gt; ....

PS E:\repos\Github\officeconverter> docker network rm 92f7d20ed432 3f96cfb7b591 92f7d20ed432 3f96cfb7b591 PS E:\repos\Github\officeconverter> docker network ls 网络 ID 名称 驱动程序范围 868c88a83bd6 桥接本地

【讨论】:

  • 您也可以运行docker remove prune 删除所有未使用的网络。
  • 抱歉,我发现这里有一个错字。我的意思是docker container prune
  • 网络不明确时,此方法无效。
  • 我发现了同样的问题docker network rm &lt;network_id&gt;帮助了我,谢谢。
【解决方案2】:

尝试: docker network prune

这将删除您的所有网络。

【讨论】:

    【解决方案3】:

    对我有用的解决方案是:

    docker system prune -af
    docker volume prune --force.

    【讨论】:

      【解决方案4】:

      sudo cronjob -e打开cronjob,然后,添加新行

      */1 * * * * docker network prune -f

      这将每分钟清理一次未使用的网络(如果有)。

      【讨论】:

        【解决方案5】:

        正如其他人所说,您可以docker network rm &lt;network id&gt;实际上删除它们。

        但是如果你需要选择删除哪个,你可以:

        $ docker network inspect d5867f0be024
        [
            {
                "Name": "minikube",
                "Id": "d5867f0be024b1c81237fba1eaef3f1ff53b75e15ab84d46a13dcde53809934e",
                "Created": "2022-02-16T19:24:57.7203334-05:00",
                "Scope": "local",
                "Driver": "bridge",
                "EnableIPv6": false,
                ...
            }
        ]
        

        ...然后查看Created 时间(或其他元数据)以决定删除哪个。

        就我而言,我需要删除较新的并保留较旧的。

        【讨论】:

          【解决方案6】:

          一种选择是创建一个具有不同网络名称的新网络,并将您的 docker 容器连接到该网络。
          不明确的网桥网络名称可能会发生类似的错误。
          有人写了一篇关于如何解决这个问题的完整博客文章。
          就我而言,我发现它非常有用,我相信即使您处理的网络不是桥接器,它也会对处于类似情况的其他人有用:https://www.jorgeanaya.dev/en/bin/docker-network-name-is-ambiguous/

          这是博客文章中的简短解决方法(所有功劳归于 Jorge Anaya):

          1. 创建一个新网络。使用参数-d指定驱动

            docker network create -d bridge [new-network-name]

          2. 断开容器与模糊网络的连接

            docker network disconnect bridge [container-name]

          3. 将容器连接到新网络

            docker network connect [new-network-name] [container-name]

          4. 可选。清除我们的网络并摆脱未使用的网络

            docker network rm $(docker network ls -q)

          就是这样,现在我们应该可以启动我们的容器了。
          不要忘记在每个命令的开头添加sudo 以获得权​​限。

          【讨论】:

            【解决方案7】:

            只需运行 docker remove prune 它将删除所有网络并重新创建。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-06-30
              • 1970-01-01
              • 1970-01-01
              • 2018-07-31
              • 2021-05-11
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多