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