连接两个docker容器
我有两个现有的docker容器web和db。我想将这两个容器链接起来,以便它们能够相互通信。如果我使用--link命令,则意味着它将把web链接到一个新的映像,而不是数据库。连接两个docker容器,docker,docker-compose,dockerfile,docker-swarm,Docker,Docker Compose,Dockerfile,Docker Swarm,我有两个现有的docker容器web和db。我想将这两个容器链接起来,以便它们能够相互通信。如果我使用--link命令,则意味着它将把web链接到一个新的映像,而不是数据库。link用于连接容器,以便它们可以在建立通信后彼此通信,它们将能够与您的数据库通信 在docker网络出现之前,使用--link是连接容器的唯一方法。这为集装箱间通信问题提供了“更清洁”的解决方案,同时解决了链路的两个主要限制: 重新启动链接容器会断开链接 在不同主机上运行的容器之间不支持链接 使用docker网络,您可以使
link
用于连接容器,以便它们可以在建立通信后彼此通信,它们将能够与您的数据库通信 在docker网络出现之前,使用--link
是连接容器的唯一方法。这为集装箱间通信问题提供了“更清洁”的解决方案,同时解决了链路的两个主要限制:
--net
选项在指定网络上启动容器:
docker network create example
docker run -d --net example --name container1 <image>
docker run -d --net example --name container2 <image>
docker网络创建示例
docker run-d--net示例--name container1
docker run-d--net示例--name container2
此时,可以通过地址
相互访问2个容器。示例
:即容器1。示例
和容器2。示例
,仅为了使偶然发现此问题的人受益。--link
功能现在被认为是遗留的,是docker不推荐使用的主要候选功能。
最简单的方法是使用
depends_on:
为此,建议首先创建如下网络:
docker network create <network_name>
看看我是如何创建一个名为
resolute
的网络,并将应用程序绑定到同一个网络的。我还为我的rabbitmq容器提供了一个hostname
。这是因为docker现在预先添加了容器名称,这使得按名称绑定服务变得困难。谢谢您的解释。现在我明白了。--link
现在不推荐使用!我真的很欣赏--net的例子。将试用它。使用--net它将位于特定的IP下。但这两个容器都有不同的IP,如子网IP。例如:网络IP为180.12.10.0意味着,容器IP将分别为180.12.10.1和180.12.10.2?docker主机上可以存在的网络数量是否有限制?
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