【こんてなれじすとり】

コンテナレジストリ とは?

最終更新:
💡 アプリのイメージを預けて、使う場所へ届ける倉庫

コンテナイメージを保管・共有する場所。作成したイメージをpushして登録し、別の環境からpullして取得する。レジストリ内にはリポジトリがあり、タグやダイジェストでイメージを指定できる。

📌 このページのポイント
イメージの倉庫:pushして、pull作る側ビルド済みレジストリイメージを保管使う側取得して起動push →pullで取得 →倉庫の中:myapp リポジトリタグ v1 / 内容のダイジェストタグは付け替え可能なことがある
イメージを登録するのがpush、取得するのがpullです。レジストリは保管・共有の場所で、コンテナを動かすのは実行環境です。
ひよこ ひよこ
コンテナレジストリは、何のためにあるの?
ペンギン先生 ペンギン先生
ビルドしたコンテナイメージを、チームや別のサーバーで使えるように保管・共有する場所だよ。作った側がpushして登録し、使う側がpullして取得する。レジストリ自身がアプリを実行するのではなく、実行環境が取得したイメージからコンテナを起動するんだ。
ひよこ ひよこ
リポジトリとも、同じ意味なの?
ペンギン先生 ペンギン先生
区別できるよ。レジストリは保管・共有の仕組み全体で、その中のリポジトリは関連するイメージをまとめる場所だね。たとえばmyappというリポジトリに、myapp:v1やmyapp:v2を置くイメージ。Docker Hub、Amazon ECRなどがあり、組織内でレジストリを運用することもできる。
ひよこ ひよこ
latestなら、自動で最新版になる?
ペンギン先生 ペンギン先生
latestはタグの名前で、常に最新版を指す保証はないよ。v1のようなタグも、変更が許可されていれば別の内容に付け替えられる。特定の内容を指定するにはsha256から始まるダイジェストを使う方法がある。固定した古いイメージを使い続ければ安全、という意味ではないんだ。
ひよこ ひよこ
公開や無料プランなら、誰でもいくらでも取れる?
ペンギン先生 ペンギン先生
公開と非公開、認証の有無、契約プランなどで利用条件が変わるよ。Docker Hubにも取得回数や過剰利用への制限がある。非公開のイメージを配布するときは、CIや実行環境に必要な取得権限を用意し、秘密情報をイメージへ入れていないかも確かめよう。
ひよこ ひよこ
スキャンで問題がなければ、安心して使える?
ペンギン先生 ペンギン先生
スキャンは既知の脆弱性を見つける助けになるけれど、安全性の完全な証明ではないよ。Amazon ECRの基本スキャンはOSの脆弱性、拡張スキャンはOSと言語パッケージを対象とする。機能や実行頻度には違いがあるんだ。検出結果の影響を調べ、修正版をビルドして新しいイメージへ更新し、動作を検証しよう。
もっと詳しく知りたい人へ

同じタグなのに別のイメージが取得されることはある?

タグの変更が許可されていれば起こります。内容を厳密に指定するには、タグではなくイメージのダイジェストを使います。ただし固定したイメージが安全であり続けるわけではありません。脆弱性修正を取り込む際は、新しいダイジェストへ更新して検証します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンテナレジストリ」って出てきたら「コンテナイメージを保管・共有する倉庫」と思えばだいたいOK!
📖 おまけ:英語の意味
「Container Registry」 = コンテナイメージの登録・保管場所
💬 Registryは登録所。コンテナそのものを動かす場所ではなく、その元になるイメージを保管する場所だよ。

参考資料

← 用語集にもどる