どなたか、私の Docker コンテナで apt-get が動作するように手伝っていただけますか? 私の Docker コンテナで apt-get コマンドを実行しようとすると、必ずコマンドが失敗します。私は、Ubuntu 12.04 で Docker バージョン 1.1.1、ビルド bd609d2 を実行しています。
私がする時
$ sudo docker run -i -t ubuntu:14.04 /bin/bash
# apt-get update
エラーが表示される
'archive.ubuntu.com' を解決できませんでした
/etc/default/dockerの以下の行のコメントを外してみました
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
しかし、まだgoogle.comにpingできません
ping: 不明なホスト
コンテナがDNSサーバー8.8.8.8と8.8.4.4を使用していることを確認しました
root@0baa87fc6322:/# cat /etc/resolv.conf
ネームサーバー 8.8.8.8
ネームサーバー 8.8.4.4
両方のサーバーに ping を実行できるので、ファイアウォールがパケットをドロップしているわけではないことはほぼ確実です。
これに関して何かご協力いただければ幸いです。
ありがとう!
ベストアンサー1
ご協力ありがとうございました。DNS の問題であり、ファイアウォールが原因であることが分かりました。さらに検索してみると、「docker apt-get fail」で検索したときには見つけられなかったこの質問を見つけました。
Docker - 企業ネットワークでイメージのビルド中にネットワーク呼び出しが失敗する
彼の問題は私の問題と似ていましたが、その解決策のおかげで問題が解決しました。今後この質問を見つけた人のために、彼の解決策をコピーしておきました。
これらの 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 サービス docker を再起動
バイナリ
バイナリ方式 (つまりパッケージなし) で Docker をインストールした場合は、Docker デーモンを起動するときに DNS サーバーを設定します。
sudo docker -d -D --dns --dns &