2017-06-29 6 views
2

ドッキング・イン・ドッキング・セットアップを使用して、親ドッキング・コンテナからの子ドッキング・コンテナーとネットワーク接続したいと考えています。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 

私は幸運なしにいくつかの変更を試みました。

ホストのネットワークを使用して
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 

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 --network host httpd:alpine 
/# curl localhost:80 
curl: (7) Failed to connect to localhost port 80: Connection refused 

することは驚くべきことに、私はこの上の任意の既存の記事を見つけることができませんでした。ここに誰かがいくつかの洞察を持っていますか?

ありがとうございます!

+0

docker-in-dockerの設定をしたいと思っているのですか? [this](http://jpetazzazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/)のブログ記事を先に読んでください。 – JonesV

+0

@JonesV私は一般的な質問に特定のシナリオに入るのを避けましたが、あなたが尋ねたので... [GitLab CIパイプラインジョブ](https://docs.gitlab.com/ee/ci/yaml /)。 GitLab CIのジョブは、指定できるドッカーコンテナ内で実行されます。私はいくつかのHTMLに基づいてPDFレポートを作成するJobを作成しています。これを行うには既存のDockerイメージを利用したいと思います。だから、私はドッキング・イン・ドッカーの状況を持っています。 これが明確になることを願っています:) –

+0

私はdocker-in-docker設定を手伝うことができません。私はちょうどあなたがブログ記事=に記載されているポイントを認識していることを確認したかったのです。 – JonesV

答えて

1

DockDソケットとDockDソケットの両方に賛否両論があり、どちらも確かに使用例があります。例として、this set of blog postsをチェックしてください。これは、ユースケースの1つを説明するうえで役立ちます。上記のあなたの例のドッキングウィンドウ・イン・ドッキングウィンドウの設定を考えると、あなたは2つの方法のいずれかでのApacheのhttpdサーバにアクセスすることができます

docker:dind容器の内側から

1)、それはlocalhost:8080に利用できるようになります。

2)最初にアクセスしようとしていたdocker:latestコンテナ内から、docker:dindコンテナに設定されているホスト名で利用できます。この場合、--name mydindを使用したため、curl mydind:8080は標準のApache <html><body><h1>It works!</h1></body></html>を提供します。

希望します。

関連する問題