プロキシサーバを使うように Docker を設定

コンテナで HTTP、HTTPS、FTP プロキシサーバが必要な場合、異なる方法で設定できます。

  • Docker 17.06 以下のバージョンでは、コンテナ内で適切な 環境変数(proxy-use-environment-variables) の設定が必要です。そのためには、イメージ構築時(イメージの 移植性(portable) が下がります)か、コンテナの作成もしくは実行時に行います。

Docker クライアントの設定

  1. Docker クライアント上では、ユーザのホームディレクトリ内で ~/.docker/config.json ファイルを作成・編集します。以下の例のような JSON を追加します。必要があれば、プロキシのタイプとして httpsProxyftpProxy に置き換えます。さらに、プロキシサーバのアドレスやポート番号も置き換えます。また、同時に複数のプロキシサーバも設定できます。

    オプションでホストや範囲をプロキシサーバの設定を通して除外できます。 noProxy キーの設定で、1つまたは複数のカンマ区切りの IP アドレスやホストを追加します。 以下の例にあるように、ホストと IP アドレスの CIDR 記法を使う時に、 * 文字の利用がサポートされています。

    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://192.168.1.12:3128",
         "httpsProxy": "http://192.168.1.12:3128",
         "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
       }
     }
    }
    

    ファイルを保存します。

  1. 新しいコンテナの作成もしくは起動時に、環境変数はコンテナ内へ自動的に設定されます。

環境変数を使う

環境変数を手動で設定

イメージの構築時、あるいは、コンテナの作成・実行時に --env フラグを使う場合、以下の1つまたは複数の変数と、適切な値を指定できます。この手法はイメージの移植性を減少します。そのため、 Docker 17.07 以上であれば、 Docker クライアントの設定 を使うべきです。

変数

Dockerfile 例

docker run

HTTP_PROXY

ENV HTTP_PROXY="http://192.168.1.12:3128"

--env HTTP_PROXY="http://192.168.1.12:3128"

HTTPS_PROXY

ENV HTTPS_PROXY="https://192.168.1.12:3128"

--env HTTPS_PROXY="https://192.168.1.12:3128"

FTP_PROXY

ENV FTP_PROXY="ftp://192.168.1.12:3128"

--env FTP_PROXY="ftp://192.168.1.12:3128"

NO_PROXY

ENV NO_PROXY="*.test.example.com,.example2.com"

--env NO_PROXY="*.test.example.com,.example2.com"

参考

Configure Docker to use a proxy server

https://docs.docker.com/network/proxy/