1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerイメージのタグ上書きで見えた!mirror.gcr.ioキャッシュの落とし穴

Posted at

Dockerイメージのタグ上書きで見えた!mirror.gcr.ioキャッシュの落とし穴

今回は、同じタグで異なるイメージ(nginx と busybox)を push したときに、mirror.gcr.io 側のキャッシュがどう動作するのかを実験しました。


実験の概要

  1. Step 1: nginx のイメージを push

    • docker.io から nginx:latest を pull
    • kahiro/nginx:latest として tag し、 push
    • mirror.gcr.io から pull して、digest が sha256:2cdfd36070a281c568ef9639b00ba906210a708d8a0f3fa87f91718384a67fc4 と一致
  2. Step 2: busybox のイメージで上書き push

    • docker.io から busybox:latest を pull
    • 同じ kahiro/nginx:latest タグで tag し、 push
    • mirror.gcr.io から pull したが、古い nginx のdigestがそのまま返却sha256:2cdfd36070a281c568ef9639b00ba906210a708d8a0f3fa87f91718384a67fc4)となる

何が起こったのか?

  • 正常動作(Step 1)
    docker.io からの nginx イメージを push すると、mirror.gcr.io も正しくキャッシュし、同じdigestを返しました。

  • キャッシュの罠(Step 2)
    同一タグ(kahiro/nginx:latest)に busybox イメージを push して上書きしたはずなのに、mirror.gcr.io 側はキャッシュが残っており、更新前の nginx のdigestを返し続けています。


まとめ

  • タグの上書きには注意!
    同じタグで異なるイメージを push すると、mirror.gcr.io のキャッシュが更新されず、古いイメージの情報が残る可能性があります。 (Cacheがいつpurgeされるかは不明です

  • 運用のポイント

    • キャッシュ更新のタイミングの確認が必須
    • 異なるイメージは可能な限り別のタグを利用するなど、運用ルールの見直しが必要

今回の実験結果から、mirror.gcr.io のタグキャッシュは常に最新ではなく、タグ名の上書きによるイメージ更新がすぐには反映されないことが分かりました。これを踏まえ、今後のDockerイメージ運用時はキャッシュの挙動に十分注意してください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?