[解決済み] 企業ネットワークでイメージ構築中にネットワーク通話に失敗する
質問
企業ネットワーク上でDockerイメージを構築するのに問題があります。私はDockerを使い始めたばかりで、hello-worldタイプのアプリ用に以下のDockerfileを持っています。
# DOCKER-VERSION 0.3.4
FROM centos:6.4
# Enable EPEL for Node.js
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# Install Node.js and npm
RUN yum install -y npm
# Bundle app source
ADD . /src
# Install app dependencies
RUN cd /src; npm install
EXPOSE 8080
CMD ["node", "/src/index.js"]
これは、自宅のラップトップで、自分のワイヤレスネットワーク上でビルドすると、うまくいきます。必要な依存関係をプルダウンして、イメージを正しくビルドします。
しかし、職場の企業ネットワーク上にいるとき、この同じ docker ビルドが download.fedoraproject.org から RPM を取り込もうとすると、このエラーメッセージとともに失敗します。
ステップ2 : RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm ---e0c26afe9ed5 で実行中。 curl (5) プロキシ 'some.proxy.address' を解決できませんでした。 エラー: スキップ http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm - 転送に失敗
私の企業ネットワーク上では、私のラップトップからその URL にうまくアクセスできます。しかし、Docker がコンテナーを構築しようとすると、突然、まったく解決できなくなります。この動作は、さまざまな外部リソース (apt-get など) で同じです。それらはすべて、企業ネットワーク上の私のラップトップでは問題なく解決できるのですが、Docker はそれらを解決することができません。
私はここで何が起こっているのかを理解するためのネットワークのノウハウを持っていません。Docker コンテナーを構築する際に、なぜこのような奇妙な動作が発生するのか、どなたかご存知でしょうか。
どうすれば解決できますか?
問題を把握することができました。Ubuntuでは、DockerはコンテナのDNSサーバーを8.8.8.xのGoogleのサーバーに設定します。私の理解では、Ubuntuでは、/etc/resolv.confが127.0.0.1に設定されているので、これは回避策になると思われます。
これらの Google サーバーは、私たちのファイアウォールの後ろからアクセスできず、それがどの URL も解決できなかった理由です。
修正方法は、Docker に使用する DNS サーバーを指定することです。この修正は、Docker をどのようにインストールしたかに依存します。
Ubuntu パッケージ
Ubuntuパッケージをインストールしている場合は、/etc/default/dockerを編集し、以下の行を追加してください。
DOCKER_OPTS="--dns <your_dns_server_1> --dns <your_dns_server_2>"
この設定には、必要な数のDNSサーバを追加することができます。このファイルを編集したら、Dockerサービスを再起動します。
sudo service docker restart
バイナリ
Dockerをバイナリ方式(パッケージなし)でインストールした場合、Dockerデーモン起動時にDNSサーバを設定します。
sudo docker -d -D --dns <your_dns_server_1> --dns <your_dns_server_2> &
関連
-
[解決済み] なぜMSMQは私がワークグループのコンピューターにいると考えるのですか?
-
[解決済み] ICANNドメインステータス「clientTransferProhibited」とは何ですか?
-
[解決済み] Dockerでイメージのクリーンビルドを強制する方法
-
[解決済み] あるドメイン名の権威あるネームサーバーを見つけるにはどうしたらよいですか?
-
[解決済み】あるドメインのすべてのサブドメインのリストを取得する方法は?[クローズド]。
-
[解決済み】全てのDNSレコードを一覧表示する方法は?[クローズド]
-
[解決済み】(ドメイン名)サブドメインにアンダースコア「_」を入れることは可能ですか?
-
[解決済み] Amazon Route53でDNSベースのURL転送を設定する【終了しました
-
[解決済み] Amazon S3での静的ホスティング - DNSの設定
-
[解決済み] 1つのドメイン名で複数のIPアドレスを持つことは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] サーバーがNXDOMAINを見つけることができません。
-
[解決済み] traceroute: 不明なホストと不明なレジストラでのwhois
-
[解決済み] なぜMSMQは私がワークグループのコンピューターにいると考えるのですか?
-
[解決済み] ICANNドメインステータス「clientTransferProhibited」とは何ですか?
-
[解決済み] あるドメイン名の権威あるネームサーバーを見つけるにはどうしたらよいですか?
-
[解決済み】あるドメインのすべてのサブドメインのリストを取得する方法は?[クローズド]。
-
[解決済み】全てのDNSレコードを一覧表示する方法は?[クローズド]
-
[解決済み】(ドメイン名)サブドメインにアンダースコア「_」を入れることは可能ですか?
-
[解決済み] Amazon Route53でDNSベースのURL転送を設定する【終了しました
-
[解決済み] Amazon S3での静的ホスティング - DNSの設定