TL

Cloud Service

OCI Container Registry (OCIR)

Oracle Cloud のマネージドなプライベートコンテナレジストリ。OCI IAM と統合してイメージを安全に保管・配布できる。AWS の Amazon ECR に相当。

基礎セキュリティ運用上の優秀性
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.Docker / OCI イメージを保管するマネージドなプライベートレジストリ。
  • 2.OCI IAM 認証と脆弱性スキャンを統合し、OKE などから安全に取得。
  • 3.AWS の ECR 相当。リポジトリ単位で権限とライフサイクルを管理。

解決する課題

コンテナを本番で動かすには、ビルドしたイメージを安全に保管し、デプロイ先から確実に取得できる置き場が要ります。OCIR はその役割を担うマネージドなレジストリです。

  • 自前でレジストリサーバーを構築・パッチ・スケールしたくない → フルマネージドで運用負荷ゼロ
  • イメージを社外に公開せず、社内だけに閉じて配布したい → 既定でプライベート
  • 取得・push の権限をOCI の利用者と一元管理したい → IAM ポリシーで制御
  • デプロイ前に脆弱性を検出したい → イメージスキャンと統合
  • OKE / Container Instances / Functions から遅延少なくイメージを取得したい → 同一リージョンのレジストリを利用

主要概念と用語

  • レジストリ (Registry): イメージを保管するサービス本体。リージョンごとに提供され、テナンシ単位で利用する
  • リポジトリ (Repository): 同じイメージのタグ違いをまとめる単位(例: web-app)。AWS ECR のリポジトリに相当。プライベートとパブリックを選べる
  • イメージ / タグ (Image / Tag): 実体であるイメージと、それを指す名前(1.0latest など)。同一イメージに複数タグを付けられる
  • 名前空間 (Namespace): テナンシに割り当てられる一意の文字列。イメージのパス(リポジトリ名)の先頭に入る
  • リージョンキー / レジストリ URL: <region-key>.ocir.io 形式のエンドポイント(例: フェニックスは phx.ocir.io)。イメージは <region-key>.ocir.io/<namespace>/<repo>:<tag> で参照する
  • 認証トークン (Auth Token): docker login で使うパスワード代わりの資格情報。ユーザー名は <namespace>/<user-name> 形式。フェデレーションユーザーは別形式になる
  • イメージスキャン: プッシュされたイメージの既知脆弱性 (CVE) を検査する機能(OCI Vulnerability Scanning と連携)
  • 署名 (Image Signing): イメージに署名し、デプロイ時に改ざんされていないことを検証する仕組み(OCI Vault のキーを利用)

仕様・制限・クォータ

  • 規格は Docker V2 / OCI イメージフォーマットに準拠し、標準の docker / podman などのツールでそのまま push・pull できる
  • レジストリはリージョンごとに存在し、リポジトリはコンパートメントに属して IAM 制御を受ける
  • リポジトリは既定でプライベート。明示的にパブリックへ変更すると認証なしで pull できる
  • テナンシ/リージョンごとにリポジトリ数やストレージ量に**サービス制限(リミット)**があり、コンソールから引き上げ申請が可能(具体的な上限値はリージョンやプランで変わるため、コンソールの「Limits, Quotas and Usage」で確認する)
  • イメージの保管には保管容量に応じたストレージ課金が発生する一方、レジストリ機能そのものの追加料金はかからない
  • リポジトリ単位でコンパートメントクォータを定義し、利用量を制御できる

内部の仕組み

OCIR は Oracle が運用するマネージドサービスで、利用者はサーバーを意識しません。イメージのレイヤーは内部的に OCI Object Storage 上に保管され、リージョン内で冗長化されます。クライアントは標準の Docker Registry V2 API を通じて、<region-key>.ocir.io のエンドポイントに対して push・pull を行います。

認証は OCI IAM に統合されています。CLI / SDK はリクエストごとに署名し、docker / podman を使う場合は認証トークンをパスワードとして docker login します。アクセス可否はリポジトリが属するコンパートメントの IAM ポリシーで判定されるため、レジストリ独自のアクセス制御を別管理する必要がありません。

OKE や Container Instances などのコンピュート側は、動的グループ + インスタンスプリンシパルを使えば認証トークンを持たずに(資格情報をワークロードに埋め込まずに)イメージを取得できます。プライベートリポジトリから pull する OKE では、imagePullSecrets か動的グループのいずれかで取得権限を付与します。

リージョンとイメージパスの読み方

イメージパス phx.ocir.io/mytenancy/web-app:1.0 は、先頭がリージョンキー(phx=フェニックス)、次が名前空間、その後がリポジトリ名:タグという構造です。デプロイ先と同じリージョンのレジストリを使うと、pull の遅延と転送コストを抑えられます。

設計パターン / ベストプラクティス

  • CI/CD パイプラインで自動 push: ビルド成功時に CI から OCIR へ push し、デプロイは固定タグまたはダイジェスト参照で行う
  • 不変タグ運用: latest だけに依存せず、1.4.2 のようなバージョンタグやイメージダイジェスト(@sha256:...)で参照し、再現性を確保
  • 環境ごとにリポジトリ/コンパートメントを分離し、IAM ポリシーで本番への push を絞る
  • push 時スキャンを有効化し、重大な脆弱性があるイメージはデプロイ前に検出・ブロック
  • イメージ署名で配布元の正当性を担保し、OKE 側で署名検証を強制する
  • 古いイメージは手動または運用ルールで整理し、ストレージコストの肥大化を防ぐ
  • 取得はインスタンスプリンシパルを使い、長命な認証トークンの配布を避ける

運用・監視

  • OCI Audit に push・pull・リポジトリ作成などの API 操作が記録される
  • リポジトリの一覧・イメージ・スキャン結果はコンソールの「Container Registry」から確認できる
  • pull に失敗する → IAM ポリシー / 動的グループの取得権限、リポジトリがプライベートか、リージョン(イメージパスのリージョンキー)が一致しているかを確認
  • push に失敗する → 認証トークンの有効性、docker login のユーザー名形式(<namespace>/<user-name>)、対象コンパートメントへの manage repos 権限を確認
  • スキャンで脆弱性が出続ける → ベースイメージの更新やパッチ適用をパイプラインに組み込む

コスト

OCIR はレジストリ機能自体に追加料金がなく、課金は主に保管しているイメージのストレージ容量に対して発生します。同一リージョン内での pull はネットワーク的に近く、別リージョンや外部への大量転送はデータ転送費の観点で割高になり得ます(具体的な単価は変動するため公式の料金ページで確認)。

  • コストの主因は蓄積されたイメージのストレージ量。古い・未使用イメージの整理が効く
  • 不要タグの削除と**ベースイメージの共有(レイヤー再利用)**で容量を抑制
  • リージョンをデプロイ先と合わせ、クロスリージョン転送を避ける

セキュリティ

  • リポジトリは既定でプライベート。公開が不要なら絶対にパブリックへ変更しない
  • 認可は IAM ポリシーで行い、read(pull)・use / manage(push・管理)を最小権限で付与
  • ワークロードからの取得はインスタンスプリンシパル + 動的グループを使い、認証トークンの埋め込みを避ける
  • イメージスキャンで既知脆弱性を検出し、イメージ署名(OCI Vault のキー)で改ざん検知とサプライチェーン保護を行う
  • 認証トークンはローテーションし、不要になったら失効させる
アンチパターン

本来プライベートにすべきリポジトリを安易にパブリック化したり、長命な認証トークンをイメージや CI 設定にベタ書きして使い回すのは危険です。公開はパブリック配布が目的の場合に限り、ワークロードからの取得はインスタンスプリンシパルに寄せて、資格情報そのものを持たない設計にしましょう。

Well-Architected の観点

  • セキュリティ: プライベート既定・IAM 連携・スキャン・署名により、保管と配布の両面で安全性を確保。最小権限ポリシーとインスタンスプリンシパルで資格情報の露出を抑える
  • 運用上の優秀性: フルマネージドでサーバー運用が不要。CI/CD と統合し、Audit でイメージ操作を追跡できるため、デプロイの再現性とトレーサビリティを高められる

試験で問われるポイント

頻出
  • OCIR はマネージドなプライベートコンテナレジストリで、対応する AWS サービスは Amazon ECR
  • イメージパスは <リージョンキー>.ocir.io/<名前空間>/<リポジトリ>:<タグ> の構造
  • docker login のユーザー名は <名前空間>/<ユーザー名>、パスワードは認証トークン(アカウントのログインパスワードではない)
  • リポジトリは既定でプライベート。アクセス制御はリポジトリが属するコンパートメントの IAM ポリシーで行う
  • OKE / Container Instances からの取得はインスタンスプリンシパル + 動的グループで資格情報を持たずに実現できる
  • **イメージスキャン(脆弱性検出)イメージ署名(改ざん検知)**が統合されている点

関連サービス・比較

観点OCI Container Registry (OCIR)AWS Amazon ECR
位置づけマネージドなプライベートコンテナレジストリマネージドなプライベートコンテナレジストリ
既定の公開範囲プライベート(パブリックにも変更可)プライベート(Public ECR は別サービス)
認可OCI IAM ポリシー(コンパートメント単位)IAM ポリシー + リポジトリポリシー
ツール認証認証トークン(docker login)一時トークン(get-login-password)
脆弱性スキャンあり(Vulnerability Scanning 連携)あり(スキャン on push)
主な連携先OKE / Container Instances / FunctionsEKS / ECS / Lambda

ハンズオン / CLI例

# 1) 認証トークンを作成(コンソール or CLI)して docker login に使う
#    ユーザー名は <namespace>/<user-name> 形式、パスワードに認証トークンを入力
docker login phx.ocir.io
# Username: mynamespace/oracleidentitycloudservice/jane@example.com
# Password: <生成した認証トークン>

# 2) ローカルのイメージに OCIR 向けのタグを付ける
#    形式: <region-key>.ocir.io/<namespace>/<repo>:<tag>
docker tag my-web-app:1.0 phx.ocir.io/mynamespace/web-app:1.0

# 3) OCIR へ push(リポジトリが無ければ自動作成される)
docker push phx.ocir.io/mynamespace/web-app:1.0

# 4) リポジトリ一覧を CLI で確認
oci artifacts container repository list \
  --compartment-id "ocid1.compartment.oc1..xxxx" \
  --query "data.items[].{Name:\"display-name\", Public:\"is-public\"}" \
  --output table

# 5) 指定リポジトリのイメージ(タグ)を一覧
oci artifacts container image list \
  --compartment-id "ocid1.compartment.oc1..xxxx" \
  --repository-name "web-app" \
  --output table

OCI Service

OCI Container Registry (OCIR)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

コンテナ

比較で見る軸

クラウド: OCI / カテゴリ: コンテナ / 難易度: basic

導入後に効く点

OCI IAM 認証と脆弱性スキャンを統合し、OKE などから安全に取得。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
OCI
カテゴリ
コンテナ
難易度
basic
関連資格
設計柱
security / operational

判断チェックリスト

  • 自社の用途が「コンテナ / security」に近いか確認する。
  • 強みである「Docker / OCI イメージを保管するマネージドなプライベートレジストリ。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

コンテナsecurityoperational