ERROR: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout in Docker の解決方法
エラーの概要・症状
Dockerを使用している際に、次のエラーメッセージが表示されることがあります。
ERROR: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout in Docker
このエラーは、DockerがDocker Hubにアクセスしようとした際に発生します。具体的には、TLS(Transport Layer Security)ハンドシェイクがタイムアウトした場合に表示されます。この問題は、ネットワークの遅延やプロキシ設定の誤りなど、さまざまな要因によって引き起こされることがあります。
このエラーが発生する原因
このエラーが発生する主な原因は以下の通りです。
- ネットワーク接続の問題:
- インターネット接続が遅い、または不安定である場合。
- プロキシ設定の不備:
- 企業や特定のネットワーク環境下で、HTTP/HTTPSプロキシを使用する必要がある場合に設定が不正確であること。
- DNS設定の問題:
- DNS解決が正常に行われていない場合。
- Dockerの設定不備:
- Dockerの設定ファイルに誤ったミラー設定やプロキシ設定が含まれている場合。
- SSL証明書の問題:
- 使用しているSSL証明書が無効である、または正しく設定されていない場合。
解決方法
解決方法 1: Dockerの再起動
最初の解決策として、Dockerサービスを再起動してみてください。これにより、一時的な接続問題が解消される場合があります。
- ターミナルを開きます。
- 以下のコマンドを入力してDockerを再起動します。
bash
sudo systemctl restart docker
この手順でエラーが解消されることがあります。特に、ネットワーク接続に問題がある場合、再起動によって改善されることがあります。
解決方法 2: プロキシ設定の確認
企業のネットワーク環境などでプロキシを介している場合、プロキシ設定が正しいか確認する必要があります。
- Dockerの設定ファイル(通常は
/etc/systemd/system/docker.service.d/http-proxy.conf)を開きます。 - 以下のように、プロキシの設定が正しく記述されているか確認します。
ini
[Service]
Environment="HTTP_PROXY=http://pqr.corp.xxx.com:8080"
Environment="HTTPS_PROXY=https://pqr.corp.xxx.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"
- 設定を変更した場合は、Dockerサービスを再起動します。
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
正しいプロキシ設定が行われていないと、Dockerが外部リソースにアクセスできなくなるため、エラーが発生します。
解決方法 3: Dockerミラーの変更
地域によるネットワークポリシーが原因である場合、Dockerのミラーアドレスを変更することが有効です。
- Dockerの設定ファイルを開きます(通常は
/etc/docker/daemon.json)。 - 以下のように、ミラーアドレスを追加または変更します。
“`json

コメント