TL

Cloud Service

Container Instances / OKE

OCI でコンテナを動かす2つの主役。Container Instances はサーバーレスで単発コンテナを実行、OKE はマネージド Kubernetes でオーケストレーションを担う。AWS の Fargate / ECS・EKS に相当。

中級運用上の優秀性コスト最適化信頼性セキュリティ
最終更新: 2026-06-03公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.OCI でコンテナを動かす 2 つの主役の使い分け。
  • 2.Container Instances は単発実行、OKE は継続運用。
  • 3.AWS の Fargate / EKS・ECS 相当。常駐運用なら OKE。

解決する課題

  • サーバー(コンピュートインスタンス)を用意・パッチ・管理したくない → Container Instances
  • バッチ・CI ジョブ・短時間の処理をコンテナで手軽に回したい → Container Instances
  • マイクロサービスを本番で安定運用したい(落ちたら再起動、負荷で増減、ローリング更新) → OKE
  • 既存の Kubernetes 資産(マニフェスト / Helm) をそのまま持ち込みたい → OKE

主要概念と用語

Container Instances 側

  • コンテナインスタンス: 1つ以上のコンテナを束ねた実行単位。同一インスタンス内のコンテナは localhost で通信し、ストレージを共有できる(Kubernetes の Pod に近い概念)
  • シェイプ: 割り当てる OCPU とメモリの組み合わせ。CI.Standard.E3.Flex / CI.Standard.E4.Flex などフレキシブルシェイプで OCPU・メモリを細かく指定
  • 再起動ポリシー: ALWAYS / NEVER / ON_FAILURE でコンテナ終了時の挙動を制御
  • コンテナレジストリ(OCIR): イメージの取得元。Oracle Cloud Infrastructure Registry

OKE 側

  • クラスタ / ノードプール: コントロールプレーン(マネージド)と、ワーカーノードの集合
  • マネージドノード / 仮想ノード: 自分で管理する VM ベースの マネージドノード と、サーバーレスにワーカーを提供する 仮想ノード(Virtual Nodes)
  • 拡張クラスタ / 基本クラスタ: SLA・機能が異なる2つのクラスタタイプ
  • 動的グループ + インスタンスプリンシパル: コンテナ/ノードに OCI 権限を渡す仕組み(AWS のタスクロール / IRSA 相当)

仕様・制限・クォータ

  • Container Instances追加コストなしで利用でき、課金は割り当てた OCPU・メモリ × 時間のみ(基盤の管理費は不要)
  • 1つのコンテナインスタンスに複数コンテナを載せられ、各コンテナに resource share(CPU 割合)を指定可能
  • シェイプは Flex が中心で、OCPU とメモリを独立して指定(OCPU は仮想コアではなく物理コア相当)
  • OKE はリージョン内の複数 可用性ドメイン / フォルトドメインにノードを分散して冗長化
  • OKE のコントロールプレーンはマネージド(拡張クラスタは SLA 付き)。ワーカーはコンピュート / Block Volume のクォータを消費
  • テナンシ/リージョンごとに **サービス制限(リミット)**があり、コンソールから引き上げ申請が可能

内部の仕組み

Container Instances は、ユーザーが指定したシェイプ(OCPU/メモリ)に対して OCI 側がサーバーレスにコンピュートを確保し、コンテナを起動します。基盤の VM・ホスト OS・パッチは OCI が管理するため、ユーザーはコンテナ定義(イメージ・環境変数・ポート・ボリューム)だけに集中できます。同一インスタンス内のコンテナはネットワークとエフェメラルストレージを共有します。

OKE はアップストリーム互換の Kubernetes を提供します。コントロールプレーン(API サーバー・etcd・スケジューラ)は Oracle がマネージドで運用し、ワーカーは2方式から選べます。

  • マネージドノード: 自分のテナンシ内の コンピュートインスタンスがワーカーになる。ノードのサイズ・OS・スケールを自分で制御でき、コスト最適化や特殊要件に強い
  • 仮想ノード(Virtual Nodes): ワーカーをサーバーレスに提供。Pod 単位の課金で、ノードのキャパシティ管理が不要
Container Instances と OKE の使い分け

Container Instances=単発・短命のコンテナをすぐ動かす(オーケストレーション不要)OKE=Kubernetes で継続運用・自己修復・スケール。OKE の仮想ノードを使えば、Kubernetes の枠組みのままワーカーもサーバーレスにできる。

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

  • 運用を最小化したい単発処理は Container Instances、継続運用・複雑な構成は OKE
  • OKE でもサーバー管理を減らすなら仮想ノードコスト最適化・特殊要件はマネージドノード
  • 権限は インスタンスプリンシパル(+ 動的グループ) で最小限に付与し、資格情報をイメージに埋め込まない
  • イメージは OCIR に置き、イメージスキャンで脆弱性を検出してからデプロイ
  • OKE は 複数フォルトドメインにノードプールを分散し、ロードバランサでローリングデプロイ

運用・監視

  • OCI Monitoring でメトリクス、OCI Logging でコンテナの標準出力/ログを収集
  • OKEKubernetes Dashboard / kubectl に加え、Monitoring・Logging と統合して可観測性を確保
  • コンテナが起動しない → イメージ取得権限(OCIR / 動的グループ)、シェイプ(OCPU・メモリ)、サブネット/セキュリティリストを確認
  • デプロイ失敗 → ヘルスチェック(Readiness/Liveness)とコンテナの起動可否、再起動ポリシーを確認

コスト

Container Instances は管理費ゼロで割り当てリソースのみ課金、OKE はクラスタタイプとワーカー方式で課金が変わります。

項目課金対象向いている用途
Container Instances割り当てた OCPU・メモリ × 時間(管理費なし)短時間・バッチ・CI ジョブ
OKE 基本クラスタワーカーのコンピュート/ストレージ(コントロールプレーン無料)検証・小規模
OKE 拡張クラスタクラスタ管理料 + ワーカー費用(SLA 付き)本番・大規模
OKE 仮想ノードPod 単位(vCPU・メモリ)+ クラスタ管理料可変ワークロード・ノード管理不要

セキュリティ

  • インスタンスプリンシパルを使い、コンテナ/ノードに OCI 権限を渡す(資格情報のハードコードを排除)
  • イメージは OCIR に置き、脆弱性スキャンを有効化。プライベートサブネット + セキュリティリスト/NSG で公開範囲を最小化
  • シークレットは OCI Vault で管理し、環境変数や Kubernetes Secret 経由で安全に注入
  • OKE は RBACIAM ポリシーを組み合わせて操作権限を制御
アンチパターン

API キーや DB パスワードをコンテナイメージや環境変数にベタ書きするのは NG。インスタンスプリンシパルOCI Vault を使えば、資格情報の管理・ローテーションを安全に行え、漏洩リスクを排除できます。

関連サービス・比較(AWS との対応)

観点OCI Container InstancesOCI OKEAWS 対応
位置づけサーバーレスでコンテナ単発実行マネージド KubernetesFargate / EKS・ECS
オーケストレーションなし(単発)KubernetesECS スケジューラ / Kubernetes
ワーカー管理不要(フルサーバーレス)マネージドノード or 仮想ノードEC2 起動タイプ / Fargate
イメージ置き場OCIROCIRECR
権限付与インスタンスプリンシパルインスタンスプリンシパル + RBACタスクロール / IRSA
向きバッチ・CI・短命処理マイクロサービス常駐運用同左

ハンズオン / CLI例

# Container Instances: 単一コンテナのインスタンスを作成
# (nginx イメージを E4.Flex シェイプで 1 OCPU / 4GB 起動)
oci container-instances container-instance create \
  --compartment-id "ocid1.compartment.oc1..xxxx" \
  --availability-domain "Uocm:PHX-AD-1" \
  --shape "CI.Standard.E4.Flex" \
  --shape-config '{"ocpus": 1, "memoryInGBs": 4}' \
  --containers '[{"displayName":"web","imageUrl":"phx.ocir.io/mytenancy/web:1.0"}]' \
  --vnics '[{"subnetId":"ocid1.subnet.oc1.phx.xxxx"}]' \
  --display-name "web-ci"

# 作成したコンテナインスタンスを一覧
oci container-instances container-instance list \
  --compartment-id "ocid1.compartment.oc1..xxxx" \
  --query "data.items[].{Name:\"display-name\", State:\"lifecycle-state\"}" \
  --output table

# OKE: マネージドノードプール付きのクラスタを quick-create で作成
oci ce cluster create \
  --compartment-id "ocid1.compartment.oc1..xxxx" \
  --name "demo-oke" \
  --kubernetes-version "v1.30.1" \
  --vcn-id "ocid1.vcn.oc1.phx.xxxx"

# OKE: kubeconfig を取得して kubectl を使えるようにする
oci ce cluster create-kubeconfig \
  --cluster-id "ocid1.cluster.oc1.phx.xxxx" \
  --file "$HOME/.kube/config" \
  --region "us-phoenix-1" \
  --token-version "2.0.0"

OCI Service

Container Instances / OKEを実務で読む

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

解決すること

コンピューティング

比較で見る軸

クラウド: OCI / カテゴリ: コンピューティング / 難易度: intermediate

導入後に効く点

Container Instances は単発実行、OKE は継続運用。

先に潰すリスク

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

数字・仕様の読み方
クラウド
OCI
カテゴリ
コンピューティング
難易度
intermediate
関連資格
設計柱
operational / cost / reliability / security

判断チェックリスト

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

次に確認する観点

コンピューティングoperationalcostreliabilitysecurity

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。