😊

Dockerのプロキシ設定(daemon(client), コンテナ両方分けて書いてあるよ)

に公開

Dockerをプロキシ配下で利用すること人は多々多々多々いると思います。
で、"docker proxy" とかでググると、以下ページが最初に引っかかって、pullできないじゃん。。。
ってなるので、、、

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

特にプロキシの設定って最初にやって、間あくから忘れちゃうんだよね。。

コンテナ側のプロキシ設定

↑のページの設定。
これは、コンテナが起動したときに環境変数にプロキシの設定を自動的に埋め込んでくれる設定

~/.docker/config.jsonに以下のように記載。

{
 "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"
   }
 }
}

設定しない場合とした場合で docker inspect <コンテナ名> してみるとわかりやすい

設定しない場合

:省略
"Env": [
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
:省略

設定した場合

:省略
"Env": [
  "HTTPS_PROXY=http://192.168.1.12:3128",
  "https_proxy=http://192.168.1.12:3128",
  "HTTP_PROXY=http://192.168.1.12:3128",
  "http_proxy=http://192.168.1.12:3128",
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
:省略

Docker daemon(client) 側のプロキシ設定

こっちは、docker daemonが通信するときにプロキシを使うようにする設定。pullやpushをするときにプロキシを使うようになる。

この話は以下に記載されている。

systemd で Docker の制御

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

作成したdocker.service.dディレクトリ配下に適当な名前のファイルを作成する。ただし拡張子は.conf

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"

こんなんでもいいっぽい

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80" "HTTPS_PROXY=https://proxy.example.com:443"

ということで、これでプロキシの設定は迷わないはず!

Discussion