LoginSignup
6
3

More than 3 years have passed since last update.

DockerHubのイメージはバージョンのタグが付いてても上書きされている

Last updated at Posted at 2019-07-08

はじめに

  • DockerHubなどのイメージについて「バージョンのタグを指定してればイメージが変わることはない」というのは勘違いです。
  • latestじゃなきゃ大丈夫」ではないです
  • むしろかなりのイメージで上書きが行われています。
    • 公式イメージでも結構変更されてます。
  • この記事では実際に公式イメージの変更履歴を集めているGitHubリポジトリで調べてみます

イメージ変更履歴を集めているGitHubリポジトリで見れます

DockerHubのwebサイトでは変更日時ぐらいしか見れませんが、
docker-library/repo-infoというリポジトリで公式イメージの変更履歴が見れます

変更履歴の見方

  • repo-info/repos/配下から調べたいイメージ名のディレクトリを見つけます
  • その配下のremotelocalの中にあるタグ名のmdファイルを見ます
    • localはpull実行で差分を検知した際に収集したもので、remoteはapiで変更を検知した際のものです。たぶん定期実行でpollingしてるんだと思います。(ほぼ違いはないはず?)
  • 「History」ボタンでコミットログから変更が追えます
    • イメージのshaがmdファイルに記録されているので、それを使って古いものをpullすることもできます。(消されていなければ)

例えば、node:11.15.0-stretch-slimイメージの変更履歴を見てみる

docker-library/repo-infonode/remote/11.15.0-stretch-slim.mdを見てみます。
image.png

  • 思ったよりたくさん更新されてました

image.png

  • Jun5 2019の変更を見てみると、新しくファイル追加やEntrypoint変更がされたようです
    image.png

  • 両方runして追加ファイルを調べてみます
    image.png

    • 追加されたのはdocker-entrypoint.shみたいです image.png
    • ちなみに、今回はDockerfile自体が変更されているので、nodeのdockerfileリポジトリでも変更が見れます

他にどんな変更があるのか

完全にイメージに依りますが、次のケースが多そうです。

  • セキュリティアップデート
  • セマンティックバージョンでマイナーバージョンまで指定しているタグの場合、パッチアップデートで上書きされる
    • 2.0タグのイメージの中身が2.0.0から2.0.1に代わる
  • セマンティックバージョンでメジャーバージョンまで指定しているタグの場合、マイナーアップデートで上書きされる
    • 2タグのイメージの中身が2.0.3から2.1.0に代わる

まとめ

  • 「latest以外のタグを指定していればイメージが書き換わることはない」は勘違いです
  • 書き換わって困るのであれば自分のレジストリでイメージ管理したほうがいいでしょう
6
3
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
6
3