Proxy 配下の WSL 上の Docker、ネットワーク設定でいろいろハマったので記録しておく
-
利用しているディストリビューションは WSL2 で Debian Sid
-
Windows 上でのプロクシサーバは
proxy.company.local
といったローカルDNS名で解決されている -
2023-07-13 systemd 有効な WSL2 について追記
TL;DR
WSL そのものの Proxy 設定 (個人設定)
- ~/.bashrc などに以下を入れておく
export ALL_PROXY="http://ip.ad.re.ss:port"
export http_proxy=$ALL_PROXY
export https_proxy=$ALL_PROXY
export HTTP_PROXY=$ALL_PROXY
export HTTPS_PROXY=$ALL_PROXY
export no_proxy="127.0.0.1,localhost,.company.local"
export NO_PROXY=$no_proxy
Windows 本体のプロキシ設定がローカルDNS名だったとしても、WSL側では IP アドレスで設定しておいた方が良さげ
docker 本体の設定 (標準インストール状態)
/etc/docker/daemon.json
{
"debug": false,
"default-address-pools": [
{
"base": "172.33.0.0/16",
"size": 24
},
{
"base": "172.34.0.0/16",
"size": 24
}
],
"dns": ["1.1.1.1","8.8.8.8"]
}
- ここで DNS が指定されている、ので、docker デーモンはローカルドメインのプロクシサーバを見つけられない
- 環境変数の
HTTP_PROXY
とか見てくれない
docker の個人設定
-
~/.docker/config.json
に書く
{
"proxies": {
"default": {
"httpProxy": "http://10.255.2.51:8080",
"httpsProxy": "http://10.255.2.51:8080",
"noProxy": "selenium,*.company.local,127.0.0.0/8,172.33.0.0/16,172.34.0.0/16"
}
}
}
-
httpProxy
、httpsProxy
を書いておくことで、docker 本体がプロクシ経由でイメージを pull したり出来るようになる -
noProxy
を書いておかないと、docker-compose
で複数コンテナのネットワークを作ったときにも プロクシ経由 で接続しようとするのでハマる - 公式ドキュメント(英文) にちゃんと書いてあるのだった
- onthefly で日本語版を提供してくださっている matsuand さんに感謝!
で、うまく行っていたんだけどちゃんと動かなくなった…(2022-10-11更新)
-
/etc/default/docker
に、.bashrc
と同様に、
export HTTP_PROXY="http://ip.ad.re.ss:port"
export HTTPS_PROXY="http://ip.ad.re.ss:port"
export no_proxy="127.0.0.1,localhost,.company.local"
おまけ apt.conf 設定
- プロキシ経由でないとネットに出られない場合、
apt.conf
を作らないとapt-get
等でソフトウェアのインストールや更新が行えない
/etc/apt.conf
Acquire::http::proxy "http:<fqdn>:<port>";