连接两个 docker 个容器
Connecting two docker containers
我有两个现有的 docker 容器网络和数据库。我想 link 这两个容器,以便它们相互通信。如果我使用 --link 命令意味着它将 link 连接到新图像而不是数据库。
link
用于连接容器,以便它们可以在建立通信后相互通信,它们将能够与您的数据库通信。
在 docker 网络出现之前,使用 --link
是连接容器的唯一方法。这些为容器间通信问题提供了"cleaner"解决方案,同时解决了links的2个主要限制:
- 重新启动 linked 容器会破坏 link
- link 不同主机上的容器 运行 之间不支持
使用 docker 网络,您将使用 --net
选项在指定网络上启动容器:
docker network create example
docker run -d --net example --name container1 <image>
docker run -d --net example --name container2 <image>
此时 2 个容器可以通过地址 <container-name>.example
相互访问:即 container1.example
和 container2.example
。
只是为了帮助偶然发现这个问题的人。 --link
功能现在被认为是遗留的,并且是 docker 弃用的主要候选者。
最简单的方法是使用
depends_on:
为此,建议首先像这样创建一个网络:
docker network create <network_name>
然后使用 docker-compose 生成相互绑定的服务。查看下面的示例,其中我将 spring-boot 应用程序绑定到 rabbit-mq。您可以从 here.
克隆我的存储库
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 现在将容器名称放在前面,这使得按名称绑定服务变得困难。
我有两个现有的 docker 容器网络和数据库。我想 link 这两个容器,以便它们相互通信。如果我使用 --link 命令意味着它将 link 连接到新图像而不是数据库。
link
用于连接容器,以便它们可以在建立通信后相互通信,它们将能够与您的数据库通信。
在 docker 网络出现之前,使用 --link
是连接容器的唯一方法。这些为容器间通信问题提供了"cleaner"解决方案,同时解决了links的2个主要限制:
- 重新启动 linked 容器会破坏 link
- link 不同主机上的容器 运行 之间不支持
使用 docker 网络,您将使用 --net
选项在指定网络上启动容器:
docker network create example
docker run -d --net example --name container1 <image>
docker run -d --net example --name container2 <image>
此时 2 个容器可以通过地址 <container-name>.example
相互访问:即 container1.example
和 container2.example
。
只是为了帮助偶然发现这个问题的人。 --link
功能现在被认为是遗留的,并且是 docker 弃用的主要候选者。
最简单的方法是使用
depends_on:
为此,建议首先像这样创建一个网络:
docker network create <network_name>
然后使用 docker-compose 生成相互绑定的服务。查看下面的示例,其中我将 spring-boot 应用程序绑定到 rabbit-mq。您可以从 here.
克隆我的存储库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 现在将容器名称放在前面,这使得按名称绑定服务变得困难。