クラウドサービス

Container Instances / OKE

OCI でコンテナを動かす2つの選択肢を使い分け。手早く単発で回すなら Container Instances、継続運用とスケールはマネージド Kubernetes の OKE。用途に応じて選べる。

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

解決する課題

  • サーバー(コンピュートインスタンス)を用意・パッチ・管理したくない → Container Instances
  • API、Web、バッチ、CI ジョブをKubernetesなしで直接動かしたい → 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 側

  • クラスタ / ノードプール: コントロールプレーン(マネージド)と、ワーカーノードの集合
  • マネージド / 仮想 / 自己管理ノード: OKEが作成するComputeベースのマネージドノード、Oracle管理の仮想ノード、自分でComputeを作成して参加させる自己管理ノード
  • 拡張クラスタ / 基本クラスタ: SLA・機能が異なる2つのクラスタタイプ
  • リソースプリンシパル / ワークロードアイデンティティ: Container InstancesやOKEのPodへ、固定APIキーなしでOCI権限を渡す仕組み

仕様・制限・クォータ

  • Container Instances追加コストなしで利用でき、課金は割り当てた OCPU・メモリ × 時間のみ(基盤の管理費は不要)
  • 1つのコンテナインスタンスに最大60コンテナを載せられ、各コンテナにCPU・メモリ上限を指定可能
  • シェイプは Flex が中心で、OCPU とメモリを指定。x86の1 OCPUは2論理CPU、Armは世代により換算が異なる
  • 既定の共有エフェメラル領域は 15GB。イメージ展開、書込みレイヤー、ログ、emptyDir が消費し、停止・再起動・削除で内容を失う
  • OKE はノードプールを複数 可用性ドメイン / フォルトドメインへ分散可能
  • OKE のコントロールプレーンはマネージド(拡張クラスタは SLA 付き)。ワーカーはコンピュート / Block Volume のクォータを消費
  • 仮想ノードと自己管理ノードは拡張クラスタのみ。マネージドノードは基本クラスタと拡張クラスタの両方で利用可能
  • テナンシ/リージョンごとに サービス制限(リミット)があり、コンソールから引き上げ申請が可能

内部の仕組み

Container Instances は、ユーザーが指定したシェイプに対して OCI 側がサーバーレスにコンピュートを確保し、1つ以上のコンテナを起動します。基盤の VM・ホスト OS・パッチは OCI が管理します。同一インスタンス内のコンテナはVNIC、IPアドレス、localhostemptyDirを共有できますが、Replica管理、サービス発見、ローリング更新はKubernetesのように自動化されません。

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

  • マネージドノード: 自分のテナンシ内の コンピュートインスタンスがワーカーになる。ノードのサイズ・OS・スケールを自分で制御でき、コスト最適化や特殊要件に強い
  • 仮想ノード(Virtual Nodes): Oracleがワーカーを管理し、Pod単位でCPU・メモリを割り当てる。拡張クラスタ専用
  • 自己管理ノード: 自分で作成したComputeインスタンスを拡張クラスタへ参加させる。特殊なOS、GPU、高性能ネットワークなどを細かく管理

横にスクロール

OCIRのコンテナイメージをContainer Instancesへ直接配置する経路と、OKEのマネージドコントロールプレーンがマネージドノード、仮想ノード、自己管理ノードへPodを配置する経路を比較した構成
Container Instancesは複数コンテナを1つの実行単位として直接起動します。OKEはKubernetesの制御ループでPodを維持し、要件に応じてマネージド、仮想、自己管理ノードを使い分けます。永続データはコンテナの書込み領域から外部ストレージへ分離します。
Container Instances と OKE の使い分け

Container Instances=Kubernetes不要の固定構成を直接動かすOKE=Kubernetesで自己修復・宣言的更新・水平スケールを行う。単発か常駐かだけでなく、複数Replica、サービス発見、ローリング更新が必要かで選びます。

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

  • 運用を最小化したい単発処理は Container Instances、継続運用・複雑な構成は OKE
  • OKE でもサーバー管理を減らすなら仮想ノードコスト最適化・特殊要件はマネージドノード
  • Container Instancesは動的グループに含めてリソースプリンシパルで権限を付与し、OKEのPodは可能ならワークロードアイデンティティを使う
  • イメージは 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・メモリ)+ クラスタ管理料可変ワークロード・ノード管理不要

セキュリティ

  • Container Instancesはリソースプリンシパル、OKEのPodはワークロードアイデンティティを使い、資格情報のハードコードを避ける
  • イメージは 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 で作成
# --kubernetes-version は OKE がサポートする最新版を指定(oci ce cluster-options get で確認)
oci ce cluster create \
  --compartment-id "ocid1.compartment.oc1..xxxx" \
  --name "demo-oke" \
  --kubernetes-version "vX.Y.Z" \
  --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 はKubernetesで継続運用。

先に潰すリスク

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

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

判断チェックリスト

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

次に確認する観点

コンピューティングoperationalcostreliabilitysecurity

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

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