OCI CLIコンテナ・イメージの操作

この項では、OCI CLIコンテナ・イメージをインストールして使用する方法について説明します。

Oracle Cloud Infrastructure (OCI)コマンドライン・インタフェース(CLI)コンテナ・イメージは、OCI CLIツールが事前インストールされているDockerイメージです。この項では、OCI CLIコンテナ・イメージをインストールして使用する方法について説明します。

要件

OCI CLIコンテナ・イメージを使用するには、次が必要です:

  • 標準準拠のコンテナ・ランタイム・エンジン(DockerPodmanなど)
  • Oracle Cloud Infrastructureテナンシ
  • そのテナンシのユーザー・アカウント(必要な権限を付与するための適切なポリシーが割り当てられているグループに属する)。
  • APIリクエストの署名に使用されるキー・ペア(公開キーがOracleにアップロードされている)。秘密キーはAPIをコールするユーザーのみが所有する必要があります。詳細は、CLIの構成を参照してください。

新しいユーザー、グループ、コンパートメントおよびポリシーの設定方法の例は、ユーザーの追加を参照してください。その他の一般的なOCIポリシーのリストは、共通ポリシーのリストを参照してください。

OCI CLIコンテナ・イメージの使用

コンテナ・イメージを使用するには、GitHubコンテナ・レジストリから最新バージョンをプルします:
$ docker pull ghcr.io/oracle/oci-cli:latest
$ docker images
REPOSITORY                              TAG               IMAGE ID       CREATED        SIZE
ghcr.io/oracle/oci-cli                  latest            387639e80a9a   3 days ago     711MB
よりシームレスなドロップイン置換にするために、イメージをociとしてタグ付けすることを検討します:
$ docker tag ghcr.io/oracle/oci-cli:latest oci
$ docker images oci
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
oci          latest    387639e80a9a   3 days ago   711MB
                   
$ docker run -v "$HOME/.oci:/oracle/.oci" oci os ns get
{
    "data": "demo-tenancy"
}
利便性を向上するため、コンテナを実行するシェル別名を作成できます:
$ alias oci='docker run --rm -it -v "$HOME/.oci:/oracle/.oci" oci'
$ oci os ns get
{
    "data": "demo-tenancy"
}

API署名キー認証

これは、すべてのOCI SDKおよびOCI CLIで使用されるデフォルトの認証方法です。この方法を使用するには、ホスト・システム上の場所をコンテナ内の/oracle/.ociディレクトリにマウントします。

以前にホスト・マシンでOCI CLIを構成している場合、API署名キーへのアクセスを提供する最も簡単な方法は、$HOME/.ociディレクトリをコンテナ内の/oracle/.oci/にマップすることです。

例:
$ docker run --rm -it -v "$HOME/.oci:/oracle/.oci" ghcr.io/oracle/oci-cli os ns get
{
    "data": "example"
}

OCI_CLI_CONFIG_FILE環境変数を渡して、OCI CLI configファイルの別の場所を使用することもできます。

ノート

$HOME/.oci/configkey_fileフィールドに~文字が使用されていることを確認して、パスがコンテナの内側と外側の両方で解決されるようにします(例: key_file=~/.oci/oci_api_key.pem)。
OCI CLIを構成していない場合は、$HOME/.ociディレクトリを作成します:
mkdir $HOME/.oci
次に、OCI CLIの対話型設定プロセスを開始します:
docker run --rm -it -v "$HOME/.oci:/oracle/.oci" ghcr.io/oracle/oci-cli setup config

詳細は、構成ファイルの設定を参照してください。

セッション・トークン認証

トークンベースの認証を使用するには、ポート8181をコンテナにマップします:
docker run --rm -it \
   -v "$HOME/.oci:/oracle/.oci" \
   -p 8181:8181 \
   ghcr.io/oracle/oci-cli session authenticate

詳細は、CLI用のトークンベースの認証を参照してください。

インスタンス・プリンシパル認証

インスタンス・プリンシパル認証を有効にするには、--auth instance_principalコマンドライン・パラメータを使用します:
docker run --rm -it ghcr.io/oracle/oci-cli --auth instance_principal os ns get
OCI_CLI_AUTH環境変数を渡すこともできます:
docker run --rm -it -e OCI_CLI_AUTH=instance_principal ghcr.io/oracle/oci-cli os ns get

シェル別名を作成した場合は、それを別名定義に追加します。

詳細は、OCI SDKの認証方法を参照してください。

ローカル・ファイル・アクセス

コンテナ内で実行されているOCI CLIがホスト上のファイルにアクセスできるようにする最も簡単な方法は、ホストからコンテナにディレクトリをバインド・マウントすることです。

次の例では、$HOME/scratchディレクトリがコンテナに/oracle/scratchとしてバインド・マウントされるため、そのディレクトリ内のファイルをOCI CLIを使用してOCIオブジェクト・ストレージに一括アップロードできます:
docker run --rm -it \
    -v "$HOME/.oci:/oracle/.oci" \
    -v "$HOME/scratch:/oracle/scratch" \
    ghcr.io/oracle/oci-cli os object bulk-upload -ns <namespace> -bn <bucket name> --src-dir /oracle/scratch/