我有两个现有的 Docker 容器 web 和 db。 我想将这两个容器链接起来,以便它们可以相互通信。 如果我使用 --link 命令,那么它将把 web 链接到一个新镜像,而不是链接到 db。
我有两个现有的 Docker 容器 web 和 db。 我想将这两个容器链接起来,以便它们可以相互通信。 如果我使用 --link 命令,那么它将把 web 链接到一个新镜像,而不是链接到 db。
--link
是连接容器的唯一方式。这些网络提供了一个更“干净”的解决方案来解决容器间通信的问题,并且同时解决了链接的两个主要限制:
--net
选项在指定的网络上启动容器:docker network create example
docker run -d --net example --name container1 <image>
docker run -d --net example --name container2 <image>
此时,两个容器可以通过地址<container-name>.example
相互访问:即container1.example
和container2.example
。
--link
功能是遗留功能,是被弃用的主要候选项。最简单的方法是使用:depends_on:
docker network create <network_name>
version: "3.1"
services:
rabbitmq-container:
image: rabbitmq:3.5.3-management
hostname: rabbitmq-container
ports:
- 5673:5673
- 5672:5672
- 15672:15672
networks:
- resolute
resolute-container:
build: .
ports:
- 8080:8080
environment:
- spring_rabbitmq_host=rabbitmq-container
- spring_rabbitmq_port=5672
- spring_rabbitmq_username=guest
- spring_rabbitmq_password=guest
- resolute_rabbitmq_publishQueueName=resolute-run-request
- resolute_rabbitmq_exchange=resolute
depends_on:
- rabbitmq-container
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- resolute
networks:
resolute:
external:
name: resolute
resolute
的网络,并将应用程序绑定到同一个网络。我还为我的 rabbitmq-container 给了一个 hostname
。这是因为 Docker 现在会在容器名之前添加前缀,这使得按名称绑定服务变得困难。link
用于连接容器,使它们能够在通信建立后相互通信,并与您的数据库通信。
<container-name>.example:<port>
是我需要的,这样就不需要使用docker-compose了。 - undefined