プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2016/07/27

Docker のプロキシ設定

update2023/08/21 event_note2016/07/27 6:27

プロキシ環境下では Docker のプロキシ設定を行わないとイメージの Pull などが行えません。

プロキシの設定方法

/etc/systemd/system/docker.service.d/http-proxy.conf を作成します。

$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

以下を追記します。

[Service]
Environment="HTTP_PROXY=http://{IP Address}:{port}"
Environment="HTTPS_PROXY=http://{IP Address}:{port}"

変更を適用します。

$ sudo systemctl daemon-reload

Docker デーモンを再起動します。

$ sudo systemctl restart docker

変更が適用されているか確認したい場合は以下を実行します。

$ systemctl show --property=Environment docker

以上で OK です。

Docker クライアントのプロキシ設定

イメージの Pull は上記で OK ですが、Dockerifle のビルド時に必要となるプロキシ設定はまた別です。
ビルド時に --build-args などでプロキシの設定を行えますが、都度指定するのも大変です。
以下の設定を行うことでそれが不要になります。

~/.docker/config.json を作成します。

$ mkdir ~/.docker
$ nano ~/.docker/config.json

以下を追記します。

{
  "proxies": {
    "default": {
      "httpProxy": "http://{IP Address}:{port}",
      "httpsProxy": "http://{IP Address}:{port}",
      "noProxy": "localhost,127.0.0.1,host.docker.internal"
    }
  }
}

以上で OK です。
もしかしたら一度再起動が必要かもしれません。

尚、docker network を作成している場合、私の環境ではそのネットワーク名も noProxy に記述しないと、コンテナ間の通信にもプロキシ設定が反映されてしまいました。