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>";