Proxy 環境下での Docker の使用方法(Docker デーモンが systemd に管理されている場合)

  • 24
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

会社内のネットワーク等を使用しており,HTTP アクセスにプロキシサーバを経由する必要がある場合には
Docker を使用する際にもプロキシサーバを設定する必要があります.

よく世の中に

export http_proxy=http://proxy.example.com:8080 してデーモン立ち上げればいいぜ

と解説しているブログを見かけますが,systemd 環境ではこれは使えません.

本稿では systemd 環境で Docker デーモンにプロキシサーバを利用するよう設定する方法をまとめます.

対象とする環境

systemd によって Docker デーモンが管理されている環境で,プロキシサーバが「proxy.example.com:8080」で動作していると想定します.

手順

Docker デーモンの設定変更

systemd により管理されている環境の場合,/lib/systemd/system/docker.service に Docker デーモンの起動に関する設定が書かれています.

これに「export http_proxy=http://proxy.example.com:8080 して」に相当する設定を追記します.

ファイル中の Environmenthttp_proxy を設定する行を追記します.もちろん,no_proxy による特定ホストの除外も可能です.

/lib/systemd/system/docker.service
...中略...

[Service]
Type=notify
Environment='http_proxy=http://proxy.example.com:8080/'  # プロキシサーバ
Environment='no_proxy=local.example.com'                 # プロキシサーバを利用しない,プライベートレジストリなど
ExecStart=/usr/bin/docker daemon -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0

...中略...

設定のリロード

設定ファイルを変更した際はリロードが必要です.

# systemctl daemon-reload

Docker デーモンの再起動

# systemctl restart docker

できた

デーモンの再起動後,プロキシサーバを経由した Dockerhub へのアクセスが可能です.

# docker search hello-world
NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
hello-world                              Hello World! (an example of minimal Docker...   64        [OK]
tutum/hello-world                        Image to test docker deployments. Has Apac...   23                   [OK]
bonomat/nodejs-hello-world               a simple nodejs hello world container           2                    [OK]
marcells/aspnet-hello-world              ASP.NET vNext - Hello World                     2                    [OK]
yesimages/hello-world                    exercise java hello-world app                   1                    [OK]
carinamarina/hello-world-app             This is a sample Python web application, r...   1                    [OK]
vegasbrianc/docker-hello-world                                                           1                    [OK]
rsakao/hello-world                       scratch "hello-world" images build from gi...   0                    [OK]
chalitac/hello-world                     Just Hello World                                0                    [OK]
bencampbell/hello-world                  First automated build.                          0                    [OK]
poojathote/hello-world                   this is 3rd POC                                 0                    [OK]
asakaguchi/docker-nodejs-hello-world     Hello World for Docker                          0                    [OK]
alexwelch/hello-world                                                                    0                    [OK]
mikelh/hello-world                       simplified hello world as dummy start for ...   0                    [OK]
vamosporpartes/hello-world               Primeiro projeto para testar o link entre ...   0                    [OK]
asakaguchi/magellan-nodejs-hello-world   Hello World for MAGELLAN                        0                    [OK]
cpro/http-hello-world                    Hello world                                     0                    [OK]
ileontyev81/docker-hello-world           hello world test build                          0                    [OK]
nirmata/hello-world                                                                      0                    [OK]
wodge/docker-hello-world                 Hello World test for auto update to Docker...   0                    [OK]
dockercloud/hello-world                  Hello World!                                    0                    [OK]
n8io/hello-world                         A simple hello world node.js app to test d...   0                    [OK]
wowgroup/hello-world                     Minimal web app for testing purposes            0                    [OK]
crccheck/hello-world                     Hello World web server in under 2.5 MB          0                    [OK]
huddlesj/docker-hello-world              Docker Hello World                              0                    [OK]

プロキシサーバを経由してはならないレジストリがある場合も,no_proxy を適切に設定すれば問題なくアクセス可能です.

# docker search local.example.com:5000/hello-world
NAME                  DESCRIPTION   STARS     OFFICIAL   AUTOMATED
library/hello-world                 0