Proxy環境下で作業していると、何か知らないけどハマったり、余計な設定をしなければなりません。
Dockerを使用する際にもProxyがあるだけで手間が増えますし、コンテナを作成する度にProxy用の設定をするのは疲れます。
なので、それを解消するための設定を書きたいと思います。
Environment
- Ubuntu 16.04.5 LTS
- Docker 18.06.1-ce
Configuration
daemon用のproxy設定
docker-hubからimageをダウンロードする際に必要になるProxyの設定が必要になります。
これは、docker-daemonをsystemd上で動作させている場合には必須です。
$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ echo -e "[Service]\nEnvironment=\"HTTP_PROXY=http://your.proxy.url:port/\"" | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://your.proxy.url:port/"
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
container用のproxy設定
containerを作成するごとにproxyの設定をするのは面倒なので、一度設定ファイルを書くことでそれを解消します。
docker-composeとかを使用すればいいのですが・・・
$ mkdir ~/.docker
$ vi ~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://your.proxy.url:port"
}
}
}
このように記述することで、コンテナ内の環境変数HTTP_PROXY
にproxyのURLがセットされます。
DNSの設定(おまけ)
ProxyをFQDNで書いた場合、それを名前解決できるDNSサーバを指定する必要があります。
これも、コンテナごとに設定しなくてもいいようにすることができます。
$ vi /etc/docker/daemon.json
{
"dns": ["xxx.xxx.xxx.xxx."]
}
$ sudo systemctl restart docker
これでproxyを名前解決できるようになります。
DNSサーバを2つ以上指定したい場合は、コンマで区切ればOKです。