GCP Compute Engine에 새로 배포된 컨테이너에 SSH를 통해 연결

GCP Compute Engine에 새로 배포된 컨테이너에 SSH를 통해 연결

복잡한 과정을 거치지 않고 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

가상 머신 인스턴스 생성 시 컨테이너 이름을 지정하는 옵션을 알지 못합니다.

해결책으로 명령을 실행하여 컨테이너 이미지를 나열할 수 있습니다. 이 명령은 이미지 이름을 얻기 위해 한 번 실행됩니다. 쉘 스크립트에 넣으십시오.

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 프라이빗 키를 사용하는 경우 명령이 더 단순화될 수 있습니다.~/.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}}')

관련 정보