docker-compose v2 का उपयोग करते समय, सेवाओं के बीच लिंक बनाने की आवश्यकता नहीं होती है। डॉकर 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
फिर "db" सेवा को test_web_app_1
. के अंदर से पिंग करें कंटेनर:
$ 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"
}
}