ハマログ

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

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日


関連記事

2018社員旅行(大型サロンバスで行く、河口湖温泉1泊2日)

こんにちは、イーツー・インフォです。少し時間が立ってしまいましたが、7/14~1…

ORA-28001 the password has expiredとの戦い

こんにちは、かねこです。 ローカルのOracleが突然起動しなくなりました。 エ…

中国市場のマーケティングは微信(WeChat)(WeiXin)がないと成り立たない!

中国Tencent(騰訊)が独自で作ったWeChatというメッセージアプリで、2…


← 前の投稿

次の投稿 →