Ich möchte mit einem Andock-Container für den untergeordneten Container von einem übergeordneten Docker-Container mit einem Andock-in-Docker-Setup vernetzen.Docker-Container-Netzwerk mit Docker-in-Docker
Angenommen, ich versuche, eine Verbindung zu einem einfachen Apache httpd-Server herzustellen. Als ich den httpd Container auf meinem Host-Maschine laufen, funktioniert alles einwandfrei:
asnyder:~$ docker run -d -p 8080:80 httpd:alpine
asnyder:~$ curl localhost:8080
<html><body><h1>It works!</h1></body></html>
Aber wenn ich das gleiche tun von einem Docker-in-Docker Setup, erhalte ich eine Connection refused
Fehler:
asnyder:~$ docker run -d --name mydind --privileged docker:dind
asnyder:~$ docker run -it --link mydind:docker docker:latest sh
/# docker run -d -p 8080:80 httpd:alpine
/# curl localhost:8080
curl: (7) Failed to connect to localhost port 8080: Connection refused
Ich habe ein paar Änderungen ohne Glück versucht. die 0.0.0.0
Schnittstelle Angeben:
asnyder:~$ docker run -d --name mydind --privileged docker:dind
asnyder:~$ docker run -it --link mydind:docker docker:latest sh
/# docker run -d -p 0.0.0.0:8080:80 httpd:alpine
/# curl 0.0.0.0:8080
curl: (7) Failed to connect to 0.0.0.0 port 8080: Connection refused
das Host-Netzwerk verwenden:
asnyder:~$ docker run -d --name mydind --privileged docker:dind
asnyder:~$ docker run -it --link mydind:docker docker:latest sh
/# docker run -d --network host httpd:alpine
/# curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused
Überraschenderweise konnte ich nicht alle vorhandenen Artikel zu diesem Thema finden. Hat hier jemand Einblick?
Danke!
Lassen Sie mich zuerst fragen, wenn Sie sicher sind, dass Sie ein Docker-in-Docker-Setup möchten? Lesen Sie zuerst [this] (http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/) Blogpost. – JonesV
@JonesV Ich vermied es, in das spezifische Szenario in der Frage zu kommen, um es allgemein zu halten, aber da du gefragt hast ... Ich schreibe einen [GitLab CI Pipeline Job] (https://docs.gitlab.com/ee/ci/yaml /). Jobs in GitLab CI werden in einem Andockcontainer ausgeführt, den Sie angeben können. Ich schreibe einen Job, der basierend auf HTML einen PDF-Bericht erstellt. Dazu möchte ich ein vorhandenes Docker-Image nutzen. Also, ich habe eine Docker-in-Docker-Situation. Ich hoffe, das hilft zu klären :) –
Ich fürchte, ich kann nicht mit dem Docker-in-Docker-Setup helfen. Ich wollte nur sichergehen, dass dir die Punkte bekannt sind, die im Blog post =) erwähnt werden. – JonesV