Bei Verwendung von docker-compose v2 ist es nicht erforderlich, Links zwischen Diensten zu erstellen. Docker 1.9 und 1.10 ermöglichen es Ihnen, sich über ihren Namen mit anderen Containern im selben (benutzerdefinierten) Netzwerk zu verbinden.
Sie sollten sich mit dem Namen des Dienstes verbinden können oder der Name des Containers als Hostname. Da der Name des Containers von Docker-Compose generiert wird, ist dies nicht sehr praktisch, weshalb Docker-Compose auch einen Alias hinzufügt mit dem Dienstnamen für jeden Container.
Nehmen Sie dieses sehr einfache Beispiel. Ich habe der Einfachheit halber einen Nginx-Container verwendet, aber das gleiche sollte für Ihre Situation gelten;
version: '2'
services:
web_app:
image: nginx
db:
image: nginx
Starten Sie zuerst das Projekt (vorausgesetzt;
$ docker-compose --project-name=test up -d
Creating network "test_default" with the default driver
Creating test_db_1
Creating test_web_app_1
Pingen Sie dann den „db“-Dienst innerhalb von test_web_app_1
Behälter:
$ 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
Wenn Sie die test_db_1
container können Sie sehen, dass docker-compose automatisch einen „db“-Alias für test_db_1
hinzugefügt hat Behälter;
$ docker inspect test_db_1
Gibt:(nur die NetworkSettings.Networks
Teil)
"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"
}
}