Я хотел бы подключиться к контейнеру дочернего докера из родительского контейнера докера, с установкой докеров в докере.
Скажем, я пытаюсь подключиться к простому серверу Apache httpd. Когда я запускаю контейнер httpd на моем хост-компьютере, все работает нормально:
asnyder:~$ docker run -d -p 8080:80 httpd:alpine
asnyder:~$ curl localhost:8080
<html><body><h1>It works!</h1></body></html>
Но когда я делаю то же самое с установки докеров в докере, я получаю ошибку Connection refused
:
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
Я попробовал пару изменений без везения. Указание интерфейса 0.0.0.0
:
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
Использование сети хоста:
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
Удивительно, но я не смог найти никаких существующих статей об этом. Кто-нибудь здесь имеет представление?
Спасибо!