将链接Docker容器与网络混合

时间:2018-08-04 18:53:15

标签: docker docker-networking

我有以下设置:

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-devmongo-dev,但希望共享{ {1}}和euvat容器以及freegeoip容器。

这是正确的方法还是有替代方法?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

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用户定义的网桥网络,并将euvatweb-wwwfreegeoip容器连接到该网络。

根据需要替换/添加容器。最好写一个撰写文件,用一个命令调出容器