1 回答

TA貢獻1784條經驗 獲得超9個贊
使用 docker-compose v2 時,不需要在服務之間創建鏈接。Docker 1.9 和 1.10 允許您通過名稱連接到同一(自定義)網絡上的其他容器。
您應該能夠使用服務名稱或容器名稱作為主機名進行連接。鑒于容器的名稱是由 docker-compose 生成的,使用起來并不方便,因此 docker-compose 還為每個容器添加了一個帶有服務名稱的別名。
以這個非常簡單的例子為例。為方便起見,我使用了 Nginx 容器,但同樣適用于您的情況;
version: '2'
services:
web_app:
image: nginx
db:
image: nginx
首先啟動項目(假設;
$ docker-compose --project-name=test up -d
Creating network "test_default" with the default driver
Creating test_db_1
Creating test_web_app_1
然后從test_web_app_1容器內部ping“db”服務:
$ docker exec -it test_web_app_1 ping -c 2 db
PING db (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.108 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.243 ms
--- db ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.108/0.175/0.243/0.068 ms
如果檢查test_db_1容器,可以看到 docker-compose 自動為test_db_1容器添加了“db”別名;
$ docker inspect test_db_1
給:(只是NetworkSettings.Networks部分)
"Networks": {
"test_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"db",
"002b1875e61f"
],
"NetworkID": "0f9e2cddeca79e5a46c08294ed61dee273828607f99014f6410bda887626be70",
"EndpointID": "a941ab95586a8fdafc5075f9c5c44d745f974e5790ef6048b9e90115a22fb31f",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:02"
}
}
- 1 回答
- 0 關注
- 187 瀏覽
添加回答
舉報