プロキシ環境下でdockerコンテナを使用する方法

概要

プロキシ環境下でdockerコンテナを使用する際、プロキシの設定が正しくできていなくてコンテナ外と通信できないというケースが多々ある。
そのため、今回はプロキシ環境下でdockerコンテナを使用するための設定を紹介する。

方法①:config.jsonを使用する

やり方としてはコンテナにプロキシの環境変数設定をするだけなのだが、やりやすい方法として2つある。
まず1つ目としてconfig.jsonを使用する方法を紹介する。


~/.docker/config.jsonにファイルを作成し、ファイルに以下の内容を追記してコンテナ作成するだけ。

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://username:password@proxy.com:8089",
     "httpsProxy": "https://username:password@proxy.com:8089",
     "noProxy": "example1.com"
   }
 }
}

こうすることでdockerがコンテナ起動時に自動でファイル内容を参照し環境変数を反映してくれる。

<補足>

  • httpProxyとhttpsProxyは使用するプロキシサーバーのアドレスとポートを指定する。
  • @マークの前は各自の認証するためのユーザー名とパスワードを設定する。
  • プロキシサーバーを介したくないホストについてはnoProxyの方に追記する。

方法②:docker runのオプションで指定

docker runのオプションで環境変数を渡すこともできるので、config.jsonを使いたくない人はこちらでもよい。
envオプションで更新したい環境変数名を指定してあげると更新できる。

$ docker run --env HTTPS_PROXY="http://username:password@proxy.com:8089" --name container_name -it image_name

<補足>

  • container_nameについては生成させたいコンテナ名を指定する。
  • image_nameについては使用するイメージ名を指定する。


各環境変数名とオプション設定例はこちら

環境変数名 実行例
HTTP_PROXY --env HTTPS_PROXY="http://username:password@proxy.com:8089"
HTTPS_PROXY --env HTTPS_PROXY="https://username:password@proxy.com:8089"
NO_PROXY --env NO_PROXY="example1.com"

確認方法

正しく反映されたかどうか確認すべく、コンテナ内に入り環境変数をチェックする。

# コンテナ内に入る
$ docker exec -it container_name bash

# コンテナ内でenvコマンドで環境変数確認
$ env

# こんな感じで環境変数が出力される
HTTPS_PROXY=https://username:password@proxy.com:8089
HTTP_PROXY=http://username:password@proxy.com:8089
NO_PROXY=example1.com

<補足>

  • container_nameについては確認したいコンテナ名を指定する。


コンテナ内でenvコマンドを実行して、指定した環境変数(HTTPS_PROXY等)に正しく値が反映されていればOK。