Ann*_*aus 23 docker dockerfile
我的docker容器在本地网络中运行,名为my_local_network.为确保网络存在,每个构建脚本都以以下内容开头:
docker network create --driver bridge my_local_network
Run Code Online (Sandbox Code Playgroud)
这很好用.如果网络不存在,则创建它,如果没有,则不会发生任何事情.除了错误消息:
Error response from daemon: network with name my_local_network already exists
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉docker只创建网络,如果它不存在?
viv*_*d4v 29
目前没有办法强制它或忽略它但你可以使用shell摆脱这个问题 -
docker network create --driver bridge my_local_network || true
这样,无论何时构建脚本执行,如果没有网络,它将创建一个其他它将返回true而不会发生任何命令失败,以便构建脚本的其余部分可以执行.
ykt*_*too 25
基于@AndyTriggs的回答,一个简洁(和正确)的解决方案是:
docker network inspect my_local_network >/dev/null 2>&1 || \
docker network create --driver bridge my_local_network
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
NETWORK_NAME=my_local_network
if [ -z $(docker network ls --filter name=^${NETWORK_NAME}$ --format="{{ .Name }}") ] ; then
docker network create ${NETWORK_NAME} ;
fi
Run Code Online (Sandbox Code Playgroud)
好处:
事实上,它与@yktoo 在@Andy Triggs 的回答下的评论中提供的解决方案非常相似。
您可以首先测试网络的存在,如果不存在则创建它。例如:
docker network ls|grep my_local_network > /dev/null || echo "network does not exist"
Run Code Online (Sandbox Code Playgroud)
将echo替换为network create命令:
docker network ls|grep my_local_network > /dev/null || docker network create --driver bridge my_local_network
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8150 次 |
最近记录: |