docker - 将链接docker容器与网络混合

标签 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,但希望与euvat容器共享freegeoipweb-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用户定义的桥接网络,并将euvatweb-wwwfreegeoip容器连接到该网络。

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

关于docker - 将链接docker容器与网络混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51688659/

相关文章:

node.js - meteor 运行服务器获取错误: “Could not locate the bindings file. […]bcrypt[…]”

python - 无法从 Docker 容器访问本地主机

docker - docker容器内pip install的下载速度非常慢

php - 尝试使用 Docker 启动已安装的 Symfony "Akeneo PIM"时,EACES 权限被拒绝

docker - docker 无法识别默认地址池

amazon-web-services - 如何将特定日志文件从多容器 Docker Elastic Beanstalk 流式传输到 CloudWatch?

Nginx 不会重新解析 Docker 中的 DNS 名称

docker - Docker 'host' 和 'none' 网络有什么用?

docker - 如何从Docker容器连接到远程服务

docker-compose - Nextjs + Docker-Compose : how to resolve container hostname client-side?