面倒な手続きを踏まずに、GCP Compute Engine にデプロイされたコンテナに SSH で簡単にアクセスしたいと考えています。
まず、コンテナを使用してコンピューティング インスタンスを作成します。
gcloud compute instances create-with-container instance_name --container-image gcr.io/my-container-path:latest
次に、SSH で接続してみます:
gcloud compute ssh instance_name --container CONTAINER_NAME
問題は、CONTAINER_NAME が不明であることです。インスタンスを作成するときに、コンテナ名を決定論的に設定する方法はないようです。そのため、インスタンスを作成した後、SSH 機能を使用する前に、インスタンスに対して「docker ps」を実行してランダムな名前を決定する必要があります。
これは標準的な使用パターンのようですが、何か見落としているに違いありません。もっと良い方法はありますか?
答え1
仮想マシンインスタンスの作成時にコンテナに名前を付けるオプションがあることは知りません。
解決策として、コンテナ イメージを一覧表示するコマンドを実行できます。このコマンドは、イメージ名を取得するために 1 回実行されます。これをシェル スクリプトに組み込みます。
gcloud compute ssh $INSTANCE_NAME \
--project $PROJECT_ID \
--zone $ZONE_NAME \
--ssh-key-file $SSH_PRIVATE_KEY \
--command "docker ps"
注: コマンドを簡素化するために、プロジェクトとゾーンを指定する必要がないように CLI を設定できます。
gcloud config set project PROJECT_ID
gcloud config set compute/zone ZONE_NAME
インスタンスがデフォルトのSSH秘密鍵を使用している場合、コマンドはさらに簡素化されます。google_compute_engine のファイル。
これにより、コマンドは次のようになります。
gcloud compute ssh $INSTANCE_NAME --command "docker ps"
答え2
実行中のコンテナに接続するための単一コマンド バージョン:
gcloud compute ssh my-vm --project=my-project --container=$(gcloud compute ssh my-vm --project=my-project --command 'sudo docker ps --format {{.ID}}')