[英]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.