我想通過docker-in-docker設置與父Docker集裝箱中的一個小孩碼頭集裝箱聯網。Docker集裝箱網絡與Docker-in-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>
但是,當我做同樣的從泊塢窗功能於泊塢窗的設置,我得到一個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
出人意料的是,我無法找到這個任何現有的文章。有人在這裏有一些見解嗎?
謝謝!
讓我先問你,如果你確定你想要碼頭泊位設置?先閱讀[this](http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/)博文。 – JonesV
@JonesV我避免進入問題的具體情況,以保持它的一般性,但因爲你問... 我正在寫一個[GitLab CI管道作業](https://docs.gitlab.com/ee/CI/YAML /)。 GitLab CI中的作業在您可以指定的Docker容器內運行。我正在編寫一個基於某些HTML生成PDF報告的作業,並且我想利用現有的Docker映像來執行此操作。所以,我有一個碼頭泊位的情況。 我希望這有助於澄清:) –
恐怕我無法幫助碼頭泊位設置。我只是想確保你知道博客文章中提到的要點=)。 – JonesV