作者:手机用户2502853881 | 来源:互联网 | 2022-12-29 11:56
我的docker容器在本地网络中运行,名为my_local_network.为确保网络存在,每个构建脚本都以以下内容开头:
docker network create --driver bridge my_local_network
这很好用.如果网络不存在,则创建它,如果没有,则不会发生任何事情.除了错误消息:
Error response from daemon: network with name my_local_network already exists
有没有办法告诉docker只创建网络,如果它不存在?
1> vivekyad4v..:
目前没有办法强制它或忽略它但你可以使用shell摆脱这个问题 -
docker network create --driver bridge my_local_network || true
这样,无论何时构建脚本执行,如果没有网络,它将创建一个其他它将返回true而不会发生任何命令失败,以便构建脚本的其余部分可以执行.
如果`docker network create ...'本身失败,则有缺点,您的脚本会认为一切都很好。
2> yktoo..:
基于@AndyTriggs的回答,一个简洁(和正确)的解决方案是:
docker network inspect my_local_network >/dev/null 2>&1 || \
docker network create --driver bridge my_local_network
3> Andy Triggs..:
您可以首先测试网络的存在,如果不存在则创建它。例如:
docker network ls|grep my_local_network > /dev/null || echo "network does not exist"
将echo替换为network create命令:
docker network ls|grep my_local_network > /dev/null || docker network create --driver bridge my_local_network
`docker网络检查my_local_network> / dev / null || docker network create --driver bridge my_local_network`,无需grep。如果您有一个名为“ my_local_network_1”的网络,则您的命令也会出现异常。
谢谢@yktoo-挺整齐的。我曾经考虑过检查,但是出于某种原因,当时还没有考虑将其重定向到/ dev / null,并且不希望有大量检查信息产生副作用。