我有以下设置:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eab42051ca26 web-www:20180804 "node run.js" 8 minutes ago Up 8 minutes 3000/tcp web-www
63ec48e93a77 jwilder/nginx-proxy:latest "/app/docker-entrypo…" 9 hours ago Up 9 hours 0.0.0.0:80->80/tcp nginx-proxy-server
463ffd55260b fiorix/freegeoip "/go/bin/freegeoip" 9 hours ago Up 9 hours 8080/tcp freegeoip
bdc702c370ec euvat "/usr/local/bin/euva…" 9 hours ago Up 9 hours 3000/tcp euvat
40c07de732fa redis:4.0.10 "docker-entrypoint.s…" 9 hours ago Up 9 hours 6379/tcp redis-www
76831834f59d mongo:4.0 "docker-entrypoint.s…" 9 hours ago Up 9 hours 27017/tcp mongo-www
我的web-www node.js应用通过以下位置连接到Redis和mongo
NETWORK ID NAME DRIVER SCOPE
74d8f38aca38 bridge bridge local
1c894a7fa176 host host local
ca02c5ccac55 network-www bridge local
7226d9cc5360 none null local
我的run.sh文件是这样的:
OLDAPP="$(docker ps --all --quiet --filter=name="$APP")"
if [ -n "$OLDAPP" ]; then
docker stop $OLDAPP && docker rm $OLDAPP
fi
docker run --name web-www \
--network network-www \
--link euvat:euvat \
--link freegeoip:freegeoip \
--env VIRTUAL_HOST=araweelo.local \
--env-file /env/web-www.env \
web-www:20180804.182446
因此,例如,我现在开始一个新的开发堆栈
dev-www
,因此我将创建network-dev
,启动redis-dev
和mongo-dev
,但希望与euvat
容器共享freegeoip
和web-www
容器。这是执行此操作的正确方法还是有替代方法?
任何建议都非常感谢。
最佳答案
Docker links are deprecated,也许很快就会删除。
最好提前创建网络,容器并将容器加入网络
docker network create network-www
docker run --name web-www \
--env VIRTUAL_HOST=araweelo.local \
--env-file /env/web-www.env \
web-www:20180804.182446
docker network connect network-www web-www
docker network connect network-www euvat
docker network connect network-www freegeoip
上面的命令将创建一个
network-www
用户定义的桥接网络,并将euvat
,web-www
和freegeoip
容器连接到该网络。根据需要更换/添加容器。最好写一个撰写文件,用一个命令调出容器
关于docker - 将链接docker容器与网络混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51688659/