なにを知りたいのか?
Dockerのインストールをfoculにて行おうと思い、 https://get.docker.com/ のスクリプトを流し込んだ際に気づいたのですが、どうもhttpsでのダウンロードがおかしいという状況になっています。
これで直せる、という確実性のあるものが見つけられず困っております。どなたか情報をお持ちでないでしょうか?
利用環境
- Ubuntu 20.04(仮想マシンイメージ、mac/winともに同じイメージ使用)
- VirtualBox 6.1.10
- ホスト: Windows10 2004およびmacOS Catalina
- (Win)Hyper-V: 有効・無効関係なし ※ Win10は第7世代i5使用のノート
- macOS上のVirtualBoxでは異常なしの模様 ※ macOSは第10世代i7使用のmac
このエラーについてはいろんなところで報告があり、 gcryptの異常ということで /etc/gcrypt/hwf.deny ファイルを作成(中身はall)することで対応できるというのがありますが、それでも失敗します。
なにが起きるのか
具体的には、Win10上のVirtualBoxに入れたUbuntu内で、wgetやcurlを使って、Dockerのリポジトリからファイルをダウンロードすると、同じURLからなのにハッシュが一致しないということが起きます。
$ wget -nv -O- https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb | md5sum 2020-06-23 09:21:58 URL:https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb [21420058/21420058] -> "-" [1] dbb9cb9d7e43805afe5ff9f32af9a0ea - $ wget -nv -O- https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.132_amd64.deb | md5sum 2020-06-23 09:22:01 URL:https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb [21420058/21420058] -> "-" [1] bea16c6c66afe4e314a9c09208852b83 -
ベアメタルなUbuntu(Pi4上)では当然想定される同じものになります。
mingw64のcurl+md5sumでも同様に同じ値が取得できてます。
まさかと思って、自前のサーバー上で検証してみたところ、httpでのダウンロードでは壊れていないようです。Dockerのサイトだからとかそういうレベルでもない模様です。
# サーバー側にDockerから落としたdebをリネームして配置してます $ md5sum /var/www/html/docker/engine.deb /var/www/html/wordpress/engine.deb 4d1ff817bbaadb641ee15ffa67d1b964 /var/www/html/docker/engine.deb # http用 4d1ff817bbaadb641ee15ffa67d1b964 /var/www/html/wordpress/engine.deb # https用 # Win10+VirtualBox上のUbuntuにてダウンロード # httpで2回ダウンロード: 正常 $ curl -sL http://static.example.com/docker/engine.deb | md5sum 4d1ff817bbaadb641ee15ffa67d1b964 - $ curl -sL http://static.example.com/docker/engine.deb | md5sum 4d1ff817bbaadb641ee15ffa67d1b964 - # httpsで3回ダウンロード: 破損 $ curl -sL https://blog.example.com/engine.deb | md5sum bced91f8b3b84aeeeb61beb9b2af1545 - $ curl -sL https://blog.example.com/engine.deb | md5sum 4d1ff817bbaadb641ee15ffa67d1b964 - # たまたま正解することもある $ curl -sL https://blog.example.com/engine.deb | md5sum b57ee586bfadc9ed1eba60c9d0e6aa3b -
ここには出していませんが、ファイルサイズは元のママです。もちろんhttpsでダウンロードした破損したと思われるdebファイルではインストール中に内包するアーカイブが破損しているため失敗しています。
ここには出しませんが、全部NULL(0x00)で埋め尽くした16MBのファイルもhttpsを経由させたら破損して居ることも確認しています。
この問題は、macOS上のVirtualBoxを使う分には問題は発生しておりません。
可能性としては、VirtualBoxとWin10の問題の複合型が考えられるのですが、「これをすれば確実におかしくなる」という決め手も欠けており、非常に困っております。
追記(2020/6/24)
返信いただいた中で、NATの利用を指摘されて「もしかしてNATが処理できてない?」とか思ったので、ブリッジモードに変更して試してみました。自動設定だとプロキシ設定も入ってしまう環境のため(影響ないとは思いますが)念のためプロキシをオフにするように環境変数を封じた状態で試しました。
結果として変わらずで、ダウンロードのたびにMD5が変わっています。
$ http_proxt= https_proxy= curl -sL https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb | md5sum cd9d232f5ea9f1968bccb88e1ef027a3 - $ http_proxt= https_proxy= curl -sL https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb | md5sum 516a720848cd4c3faeaa7708177d7377 - $ http_proxt= https_proxy= curl -sL https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb | md5sum 429cdce00015e99a4cadc35e940a2c82 -
あなたの回答
tips
プレビュー