English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Dockerのネットワークプロキシの設定の詳細解説

背景

一部のラボ環境では、サーバーが直接インターネットに接続する権限がありません。そのため、ネットワークプロキシを設定する必要があります。通常、ネットワークプロキシは/etc/environment、/etc/profileなどの設定ファイルで、これはほとんどの操作に適用できますが、dockerコマンドはこれらのプロキシを使用できません。

例えば、docker pullでイメージを外からダウンロードする必要がある場合、以下のようなエラーが発生します:

 $ docker pull hello-world
イメージ 'hello'を見つけることができませんでした-world:latest'をローカルに引き取ります
リポジトリ docker.io を引き取ります/library/hello-world
docker: httpsに接続しようとしてネットワークタイムアウトが発生しました://index.docker.io/v1/repositories/library/hello-world/images. インターネット接続が正常でないか、プロキシの背後にあるかを確認する必要があるかもしれません。
See 'docker run --help'. 

ps: この記事はUbuntu16.04テストが通過しました。

解決策1:

dockerサービスを停止し、手動で使用2375すべてのネットワークインターフェースでポートを監視してdocker daemonを起動する方法です。

 $ systemctl stop docker.service
$ nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock & 

解決策2:

設定ファイルを編集します、Ubuntuでは/etc/default/docker、CentOSでは/etc/sysconfig/docker。ただし、daemonの設定にはこれらのファイルを変更する方法は推奨されていません。この方法の使用を避けることをお勧めします。

 HTTP_PROXY="http://[proxy-addr]:[proxy-port]/"
HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/"
export HTTP_PROXY HTTPS_PROXY 

解決策三:

これは持続的な方法であり、変更が反映されると常に有効です。これはデフォルトのdocker.serviceファイルを上書きします。

1. Docker サービス用の内蔵のsystemdディレクトリを作成します

 $ mkdir -p /etc/systemd/system/docker.service.d 

2. 生成します/etc/systemd/system/docker.service.d/http-proxy.conf ファイルに HTTP_PROXY 環境変数を追加してください。その中で[proxy-addr]と[proxy-port]を実際のプロキシのアドレスとポートに変更してください:

 [Service]
Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/"HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" 

3. 内部でプロキシを使用せずにアクセスする必要がある Docker レジストリがまだある場合は、NO_PROXY 環境変数を設定する必要があります:

 [Service]
Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/"HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/"NO_PROXY=localhost"127.0.0.1,docker-registry.somecorporation.com" 

4. 設定を更新します:

 $ systemctl daemon-reload 

5. Docker サービスを再起動します:

 $ systemctl restart docker

これで本文のすべての内容が終わりました。皆様の学習に役立てば幸いです。また、呐喊教程を多くの皆様にサポートしていただけると嬉しいです。

声明:本文の内容はインターネットから提供され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を有しておらず、人工編集は行われていません。著作権侵害の可能性のある内容を見つけた場合は、notice#w までメールを送信してください。3codebox.com(メール送信時は、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がとれましたら、本サイトは即座に侵害される可能性のあるコンテンツを削除します。)

おすすめ