[英]docker-compose service and the network
试图熟悉docker-compose版本2,实际上只是设置了2个可以相互发现的简单节点集群
给定
.
|-- docker-compose.yml
|-- node1
| `-- Dockerfile
|-- node2
| `-- Dockerfile
和一个Dockerfile作为
FROM centos:centos6.6
和docker-compose.yml作为
version: '2'
services:
dn1:
build: ./node1/.
hostname: dn1.foo.com
command: tail -f /dev/null
dn2:
build: ./node2/.
hostname: dn2.foo.com
command: tail -f /dev/null
在跑步
docker-compose up -d
docker exec -it test_dn1_1 bash
$ hostname
dn1.foo.com
$ ping dn2.foo.com
PING dn2.foo.com (23.x.x.122)
$ ping dn1
64 bytes from test_dn2_1.test_default (172.21.0.3) ....
默认情况下是否可以从容器中发现服务? 是啊 从这里
我假设需要“链接”属性才能使容器彼此了解。
我如何显式配置docker-compose.yaml以使容器可以通过“主机名”相互发现? 已经尝试了链接,但这也不起作用。
谢谢
我不确定我是否理解您的问题:使用docker-compose版本2时,就像您所做的那样,当您调用docker-compose up -d
将创建容器,并创建一个自定义网络,服务的容器是部分。
从这个网络内,容器是通过他们的服务名称访问,并发现。
尽管这让我感到困扰,但是我认为这是一个错字:如果您像dn2
那样创建服务dn1
和dn2
,并且处于目录test
,那么您的容器应命名为test_dn1_1
和test_dn2_1
而不是您编写的test_dn1
。
不,我想这是一个错字。
因此,您可以与docker network ls
一起检查是否创建了一个名为test_default
的网络,并且如果您运行docker network inspect test_default
,则会找到两个容器。
现在,从test_dn1_1
内部,您可以运行ping dn2
,它应该可以解析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.