みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

docker pull で「proxyconnect tcp: tls: oversized record received」に遭遇

dockerのproxyに関するメモ。

CentOS 7.6.1810 、docker version 18.09.0 の環境下で遭遇した事象。

発生した事象

proxy配下の環境で、envoyのdockerをpullしようとした際に、以下のエラーが発生。

$ docker pull envoyproxy/envoy:latest
Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: tls: oversized record received with length 20527

proxy関連のエラーであるが、数か月前にはproxyの設定済み。
設定した当時は、別のdockerコンポーネントはpullすることができていた。

原因:

エラーメッセージで検索してみると、以下の情報あり。
https://forums.docker.com/t/oversized-record-received-while-trying-docker-pull/51281

With Docker version 17.09.0-ce, build afdb6d4, it was working for me,
but after yum update to get Docker version 18.06.0-ce, build 0ffa825, I had the same problem.

yumでインストールしていたdockerで、バージョンが上がった事によりプロキシ設定箇所の動きが変わった様子。何かわかったら追記しておく。

修正結果:

プロキシサーバのURLを、httpsでなくhttpに修正してみる。 元々はプロキシサーバ側で提供されていたのはhttpプロトコルのみであったので、本来の値に戻したことになる。

vi /etc/systemd/system/docker.service.d/http-proxy.conf

※ プロキシサーバの設定プロトコルを「https:」を「http:」に変更。

[Service]
Environment="HTTPS_PROXY=https://proxy.xxx.jp:8080/" "HTTP_PROXY=https://proxy.xxx.jp:8080/"
   ↓
[Service]
Environment="HTTPS_PROXY=http://proxy.xxx.jp:8080/" "HTTP_PROXY=http://proxy.xxx.jp:8080/"

設定の読込とserviceの再起動を実施する。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

その後、もう一度docker pullを実施してみる。

$ docker pull envoyproxy/envoy:latest
latest: Pulling from envoyproxy/envoy
b849b56b69e7: Pull complete
42986ef25bcd: Pull complete
d927c1b717ec: Pull complete
15b86ea20233: Pull complete
78d08a970f8a: Pull complete
a548d32f37a6: Pull complete
87e0dff5f99d: Pull complete
f50713996052: Pull complete
831620132a14: Pull complete
Digest: sha256:4abfb9f209947693a191b12f9a00333f2732daff342bdbe4b50328de5cb11d17
Status: Downloaded newer image for envoyproxy/envoy:latest

pullが実行できた!