docker 错误:根据名称找到2个匹配项:network< nameofservice>_default不明确

yc0p9oo0  于 2023-02-18  发布在  Docker
关注(0)|答案(7)|浏览(202)

我正在使用以下命令构建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
NETWORK ID          NAME                        DRIVER              SCOPE
868c88a83bd6        bridge                      bridge              local
92f7d20ed432        officeconverter_default     bridge              local
3f96cfb7b591        officeconverter_default     bridge              local
ao218c7q

ao218c7q1#

解决方法很简单!
只要移除网络。
比如docker network rm <network Id> <space> <network Id> ....

PS E:\repos\Github\officeconverter> docker network rm 92f7d20ed432 3f96cfb7b591
92f7d20ed432
3f96cfb7b591
PS E:\repos\Github\officeconverter> docker network ls
NETWORK ID          NAME                        DRIVER              SCOPE
868c88a83bd6        bridge                      bridge              local
eagi6jfj

eagi6jfj2#

尝试:
docker network prune
这将删除您的所有网络。

z3yyvxxp

z3yyvxxp3#

对我有效的解决方案是:
docker system prune -af
docker volume prune --force.

af7jpaap

af7jpaap4#

使用sudo cronjob -e打开cronjob,然后添加新行
*/1 * * * * docker network prune -f
这将每分钟清理一次未使用的网络(如果有)。

nuypyhwy

nuypyhwy5#

正如其他人所说,你可以docker network rm <network id>来 * 实际上 * 删除它们。
但如果您需要选择要删除的 * 哪一个 *,您可以:

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

...然后查看Created时间(或其他元数据)以决定删除哪个。
在我的情况下,我需要删除较新的,并保留较旧的。

xxls0lw8

xxls0lw86#

一种选择是使用不同的网络名称创建一个新网络,并将您的Docker容器连接到该网络。
网桥网络名称不明确时也会发生类似的错误。
一个家伙已经做了一个完整的博客文章,关于如何解决这个问题。
我发现就我而言它非常有用,我相信这对其他处于类似情况的人也会有用,即使你处理的是一个不是网桥的网络:https://www.jorgeanaya.dev/en/bin/docker-network-name-is-ambiguous/
下面是这篇博客文章中的简短变通方法(所有功劳都归功于Jorge Anaya):
1.创建新网络。使用参数-d指定驱动程序
docker network create -d bridge [new-network-name]
1.断开容器与不明确网络的连接
docker network disconnect bridge [container-name]
1.将容器连接到新网络
docker network connect [new-network-name] [container-name]
1.可选。清除网络并清除未使用的网络
docker network rm $(docker network ls -q)
就这样,现在我们应该可以启动容器了。
不要忘记在每个权限命令的开头添加sudo

qaxu7uf2

qaxu7uf27#

只要运行docker删除修剪它将删除所有网络,并再次创建。

相关问题