尝试熟悉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) ....默认情况下,可以从容器中发现服务吗?什么事?来自here
我假设需要"links“属性才能使容器相互了解。
如何显式配置docker-compose.yaml,以便容器可以通过'hostname‘发现彼此?我已经尝试过链接,但也不起作用。
谢谢
发布于 2016-06-01 20:35:10
我不确定我是否理解您的问题:当使用docker-compose版本2时,当您调用docker-compose up -d时,您的容器会被创建,并且还会创建一个自定义网络,您的服务的容器就是其中的一部分。
从这个网络内部,容器是可到达的,并且可以通过它们的服务名称来发现。
不过,Smth让我感到困扰,但我认为这是一个拼写错误:如果您像以前一样创建了服务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,它应该可以解析。
https://stackoverflow.com/questions/37557664
复制相似问题