プロキシを使用した docker pull で「最初のレコードは TLS ハンドシェイクのようには見えません」というエラーが表示される

プロキシを使用した docker pull で「最初のレコードは TLS ハンドシェイクのようには見えません」というエラーが表示される

アウトバウンド トラフィックにプロキシを使用する必要がある企業サーバーがあります。Microsoft の Docker ドキュメントに従って、Powershell コマンドを実行しました。

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://my.secret.proxy.net:8888", [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "https://my.secret.proxy.net:8888", [EnvironmentVariableTarget]::Machine)
Restart-Service docker

しかし、docker buildその後に を実行すると次のようになります:

Get https://registry-1.docker.io/v2/: proxyconnect tcp: tls: first record does not look like a TLS handshake

プロキシ アドレスなどにhttp代わりに使用してみました。結果は同じです。プロキシは透過プロキシであり、何も「スマート」ではありません。https

実行はpip install flake8 --proxy=https://my.secret.proxy.net:8888機能するので、プロキシが機能していることがわかります。

何かアイデアはありますか? さらにデバッグするためのヒントはありますか? ありがとうございます!

答え1

あなたの"HTTPS_PROXY", "https://my.secret.proxy.net:8888"変更でhttps://http://

答え2

現在のバージョンのDocker for Windowsでは、リソース -> プロキシイメージのプルに使用するプロキシを構成する UI のセクション。

参照:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

実行中のコンテナでプロキシ変数を設定する必要があります。そのためには、次~/.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"
   }
 }
}

特に WSL2 を使用していない場合は、Windows 上でこのファイルがどこにあるのかわかりませんが、docker loginレジストリにログインした場合は、ファイルはすでに存在しているはずです。

参照:プロキシサーバ

関連情報