Dockerの「ヘッダー待機中にタイムアウトを超えました」エラーを解決する方法 - TechRepublic

Dockerの「ヘッダー待機中にタイムアウトを超えました」エラーを解決する方法 - TechRepublic

出版

ジャック・ウォーレンの画像

ジャック・ウォーレンは、複数のマシンでDockerコマンドがイメージのプルダウンに失敗することを発見しました。この問題に彼は困惑しましたが、解決策は非常にシンプルであることがわかりました。

コンピュータエラー。ページが利用できないユーザーへの警告、問題発生時の注意喚起シンボル、モニターデバイス付近で怒っているクライアント、ベクター画像
画像: MicroOne/Adobe Stock

最近、Docker イメージをプルダウンするか、docker compose up -d コマンドを実行すると、次のエラーが表示されるケースがいくつかあることに気付きました。

request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

再起動、Docker Hubへのログイン、Docker CEの再インストールなど、あらゆる方法を試しましたが、エラーを回避できませんでした。かなりのトラブルシューティングが必要でしたが、ついに問題を発見し、そのシンプルさに驚きました。

参照: 採用キット: バックエンド開発者 (TechRepublic Premium)

多くの場合、この問題はDockerコマンドを実行しているマシンがプロキシの背後にあることが原因で発生します。その場合、Dockerコマンドはhub.docker.comと正常に通信できません。しかし、私のインスタンスではそうではありませんでした。実際、私のサーバーはどれもプロキシの背後にありません。一体何が原因なのでしょうか?

Dockerヘッダーのタイムアウト問題を解決する方法

まず最初に試すべきことは、Dockerコマンドを使ってログインすることです。そのためには、まずDockerHubアカウントからアクセストークンを作成する必要があります。

  1. DockerHub アカウントにログインします。
  2. 右上隅にあるプロフィール画像をクリックします。
  3. [アカウント設定]をクリックします。
  4. セキュリティセクションに移動します。
  5. 「新しいアクセス トークン」をクリックします。
  6. 新しいトークンに名前を付け、アクセス権限を割り当てます。
  7. [生成]をクリックします。
  8. 結果のアクセス コードをクリップボードにコピーします。

Docker を実行しているマシンのターミナル ウィンドウに移動し、次のコマンドでログインします。

docker login

DockerHubのユーザー名とアクセストークンの入力を求められます。アクセストークンをターミナルに貼り付け、キーボードのEnterキーを押します。これでDockerHubにログインでき、準備完了です。以下のコマンドでイメージをダウンロードしてみてください。

docker pull nginx

これで解決すれば、問題ありません。もしうまくいかない場合は、もう1つ試せる方法があります。おそらくこれで問題が解決するはずです。私の場合はこれで解決しました。

DNSサーバーが全てです。私は普段、CloudflareのDNSサーバー(1.0.0.1と1.1.1.1)を使っています。これらのDNSサーバーを設定していると、最近Dockerのpullコマンドがうまく動作しなくなってしまいました。この問題を解決するために、GoogleのDNSサーバー(8.8.8.8と8.8.4.4)に切り替えました。Ubuntu Server 22.04でこの変更を行った方法は以下の通りです。

次のコマンドを使用して、ネットワーク デバイス構成ファイルを開きます。

sudo nano /etc/netplan/00-installer-config.yml

そのファイルで、ネームサーバーのエントリが次のようになっていることを確認します。

nameservers:
addresses: [8.8.8.8,8.8.4.4]

ファイルを保存して閉じます。以下のコマンドで変更を適用します。

sudo netplan apply

netplan が処理を完了したら、DockerHub からイメージをプルダウンしてみると、成功するはずです。

これは、しばらくの間私を悩ませていた問題に対する、信じられないほどシンプルな解決策です。この簡単な修正で、Dockerが期待通りに動作するようになることを願っています。

TechRepublic Academy の以下のリソースで Docker について詳しく学んでください。

  • Dockerコンテナのハッキングとセキュリティ保護
  • Linux と Docker のコーディングバンドル
  • DockerとKubernetesのミニバンドル

Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。

記事をシェア

こちらもご覧ください

  • 開発者になる方法:チートシート
  • Linux 101: 技術プロフェッショナルが知っておくべきこと
  • 知っておくべきオープンソースとLinuxの用語40選
  • Linux、Android、その他のオープンソース技術の報道
ジャック・ウォーレンの画像

ジャック・ウォーレン

ジャック・ウォーレンは、TechRepublic、The New Stack、Linux New Mediaなどで受賞歴のあるライターです。20年以上にわたり様々なトピックを執筆し、オープンソースの熱心な推進者でもあります。ジャック・ウォーレンに関する詳細は、ウェブサイトjackwallen.comをご覧ください。

Tagged: