プロキシーサーバー利用の設定

コンテナーが HTTP、HTTPS、FTP によるプロキシーサーバーを必要とする場合、さまざまな方法により設定を行うことができます。

  • Docker 17.07 またはそれ以降においては、Docker クライアントの設定 を行って、プロキシー情報をコンテナーに自動的に設定することができます。

  • Docker 17.06 またはそれ以前においては、コンテナー内部にて 環境変数 の適切な設定を行う必要があります。 これを行うタイミングは、イメージビルド時(この場合は可搬性が劣ることになります)、生成時、実行時のいずれかになります。

Docker クライアントの設定

  1. Docker クライアント上において、コンテナーを起動するユーザーのホームディレクトリ内に~/.docker/config.jsonを新規生成するか、これを編集します。 そして以下のような JSON 記述を追加します。 この記述において、プロキシータイプとして必要であればhttpsProxyまたはftpProxyを指定します。 またプロキシーサーバーのアドレスとポートを指定します。 プロキシーサーバーは、同時に複数設定することもできます。

    プロキシーサーバーを介したくないホストや IP 範囲の指定が必要な場合は、noProxyキーにおいて 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"
       }
     }
    }
    

    ファイルを保存します。

  2. コンテナーの新規生成時や起動時には、コンテナー内に環境変数が自動的に生成されます。

環境変数の利用

環境変数の手動設定

イメージをビルドした場合、あるいはコンテナーの生成、実行時に--envフラグを利用した場合、以下に示すような環境変数を使って、値を設定して利用することができます。 この方法ではイメージの可搬性が損なわれます。 したがって 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"
network, networking, proxy, client