ハマログ

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

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日


関連記事

PHPで良さげなREPLを探す。

開発してたり調べ物したりしてると簡単なコードを試してみたくなりたくなる時がありま…

Python触ってみた

AWS Lambdaを使う為に少し触ったので、普段使ってるPHPと比較して感じた…

リモートワークのメリットデメリット

コロナウィルスの蔓延により働く形を変更せざるを得ない状況となっています。自由な働…


← 前の投稿

次の投稿 →