我想通过 docker-in-docker 设置与来自父 docker 容器的子 docker 容器联网。
假设我正在尝试连接到一个简单的 Apache httpd 服务器。当我在主机上运行 httpd 容器时,一切正常:
asnyder:~$ docker run -d -p 8080:80 httpd:alpine
asnyder:~$ curl localhost:8080
<html><body><h1>It works!</h1></body></html>
但是,当我从 docker-in-docker 设置中执行相同操作时,出现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
令人惊讶的是,我找不到任何关于此的现有文章。这里有没有人有一些见识?
谢谢!