Ich habe mehrere Docker Container im selben Netzwerk. Ich versuche, curl auf containerA zu verwenden, um das Ergebnis von einer API auf test01.docker Container zu erhalten.Docker Container: Curl zwischen den Containern funktioniert nicht
ich diesen Befehl auf dem Behälter A:
* Hostname was NOT found in DNS cache
* Trying 172.19.0.24...
* connect to 172.19.0.24 port 8031 failed: Connection refused
* Failed to connect to test-01.docker port 8031: Connection refused
* Closing connection 0
Wenn ich versuche, ping test01.docker von containerA mit dem folgenden Befehl:
curl -s test-01.docker:8031/app?status -v
Die Ausgabe ist wie folgt
ping test-01.docker
Es ist erfolgreich.
Wenn ich docker ps, zeigt es die folgenden Informationen. In meinem
43823212be7e mytestimage "/docker-entrypoint.s" 53 seconds ago Up 47 seconds 22/tcp, 2812/tcp, 5060-5061/tcp, 6970-6971/tcp, 8002/tcp, 8030-8031/tcp, 8033/tcp, 8071/tcp, 8888/tcp, 9020-9023/tcp containerA
Dies zeigt, dass Port 8031 ausgesetzt ist. Ich bin nicht in der Lage herauszufinden, warum Curl hier versagt. Wenn ich folgenden Befehl auf Test-01.docker laufen, gibt es mir eine korrekte Ausgabe:
curl -s localhost:8031/app?status
nicht sicher, warum es nicht von anderen Behältnissen in demselben Netzwerk arbeiten. Bitte sag mir, ob ich etwas verpasse.
Update: Meine Docker-compose Datei wie folgt aussieht:
version: '2'
services:
test-01.docker:
image: ##############
expose:
- 22
- 2812
- 8031
hostname: test-01
domainname: docker
Ganz einfach, weil der docker Behälter * nicht * in der Tat ist auf Port 8031 hört auf internes Andocknetzwerk. Der Port 8031 ist über eine andere Schnittstelle als die, über die die Andockcontainer miteinander kommunizieren, Ihrem Host-Computer zugänglich. – ffledgling
Können Sie Dockerfiles/docker-compose.yml freigeben? – johnharris85
@ffledgling Wie kann ich den Port 8031 über die gleiche Schnittstelle, die von Dockercontainern verwendet wird, für meinen Host-Computer freigeben? –