ハマログ

株式会社イーツー・インフォの社員ブログ

WSL2のDockerで”[internal] load metadata for docker.io/library…”がやたら遅い問題

WSL2のDockerで”[internal] load metadata for docker.io/library…”がやたら遅い問題

WSL2でdocker buildやdocker pullすると、”[internal] load metadata for docker.io/library…”に2~3分かかる。

解決策

~/.docker/config.jsonを編集して、”credsStore”: “docker.exe”を消す。

{
  "auths": {
    "123456789012.dkr.ecr.ap-northeast-1.amazonaws.com": {},
    "https://index.docker.io/v1/": {}
  },
  "credsStore": "docker.exe" <<-- これを消す
}

Docker DesktopやWindowsを再起動すると設定ファイルが元に戻ってしまうみたいです。jqを使って、こんなワンライナーで対応することにしました。

cat <<< $(jq 'del(.credsStore)' ~/.docker/config.json ) > ~/.docker/config.json

<<<やら>やらで、やたらリダイレクトしてるのはsedのようにファイルを上書きするオプションがjqにないためです。

この対策でメタデータの取得は2~3秒と、正常になりました。Dockerの認証にかかわる部分を省略するように変えているので、プライベートイメージの利用などには注意が必要かもしれません。

参考1)https://github.com/docker/for-win/issues/12995
参考2)https://github.com/docker/for-win/issues/10247
参考3)https://stackoverflow.com/questions/36565295/jq-to-replace-text-directly-on-file-like-sed-I

あとがき

先週はLaravel 10の正式リリースや、個人的に愛用していたフォントRictyなどのいろいろニュースがあったので、今日のブログネタに困らなそうでしたが、ちょうどこの問題にあたったので書きました。

察するに、Docker Desktop for WindowsでDockerを導入したWSL2の環境でdocker runなどしたときに発生するトラブルっぽいです。私はもはやWSLがないと何も開発できない体になってしまいましたが、Dockerに関してはnertctlなど別のコンテナツールを使うのもありかもしれません。

  koni   2023年2月20日


関連記事

Javaのキャッシュ処理 – Ehcache

こんにちは、かねこです。 はじめに Javaのキャッシュ処理といえばJCache…

JAX-RSでREST形式のサービスを作成するの巻

こんにちは、かねこです。 はじめに REST(Representational …

初花月 2022

今月は観梅! と勢い込んで、いつもの大船フラワーセンターに参りましたら、何やら珍…


← 前の投稿

次の投稿 →