首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-组合服务和网络

docker-组合服务和网络
EN

Stack Overflow用户
提问于 2016-06-01 08:29:55
回答 1查看 525关注 0票数 0

尝试熟悉docker-compose版本2,本质上只是设置一个可以相互发现的2个简单节点集群

给定的

代码语言:javascript
复制
.
|-- docker-compose.yml
|-- node1
|   `-- Dockerfile
|-- node2
|   `-- Dockerfile

和Dockerfile作为

代码语言:javascript
复制
FROM centos:centos6.6

和docker-compose.yml作为

代码语言:javascript
复制
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

关于跑步

代码语言:javascript
复制
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‘发现彼此?我已经尝试过链接,但也不起作用。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-06-01 20:35:10

我不确定我是否理解您的问题:当使用docker-compose版本2时,当您调用docker-compose up -d时,您的容器会被创建,并且还会创建一个自定义网络,您的服务的容器就是其中的一部分。

从这个网络内部,容器可到达的,并且可以通过它们的服务名称来发现。

不过,Smth让我感到困扰,但我认为这是一个拼写错误:如果您像以前一样创建了服务dn1dn2,并且您在test目录中,那么您的容器应该命名为test_dn1_1test_dn2_1,而不是您编写的test_dn1

不,我想是打错了。

因此,您可以使用docker network ls检查是否创建了一个名为test_default的网络,如果运行docker network inspect test_default,您将找到两个容器。

现在,您可以从test_dn1_1内部运行ping dn2,它应该可以解析。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37557664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档