当使用时gcloud compute instances create-with-container
,如果我使用具有 CMD 或 ENTRYPOINT 的图像bash
,并且如果我通过 ssh 进入 VM,并最终连接到容器,我最终会进入bash
预期的 shell:
> gcloud compute instances create-with-container test \
--container-image debian:12-slim --container-stdin --container-tty
> gcloud compute ssh test
########################[ Welcome ]########################
# You have logged in to the guest OS. #
# To access your containers use 'docker attach' command #
###########################################################
come@test ~ $ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2667f985b3f1 debian:12-slim "bash" 2 hours ago Up About an hour klt-test-wwbe
come@test ~ $ docker inspect klt-test-wwbe | grep -A 1 Cmd
"Cmd": [
"bash"
come@test ~ $ docker attach klt-test-wwbe
root@test:/# echo $SHELL
/bin/bash
root@test:/#
使用以下选项附加容器时,我得到了相同的效果--command
:
> gcloud compute ssh test --command "docker attach klt-test-wwbe" -- -t
root@test:/# echo $SHELL
/bin/bash
但是,如果我使用 ssh 进入容器gcloud
并使用选项连接到容器--container
,我最终不会进入bash
shell:
> gcloud compute ssh test --container klt-test-wwbe
# echo $SHELL
#
为什么会这样? 如何在使用时获取指定为docker镜像的ENTRYPOINT或CMD的shell(或其他环境)gcloud compute ssh test --container klt-test-wwbe
,最好无需输入它。
当然,在这个例子中,我只需输入bash
即可。但如果 ENTRYPOINT 或 CMD 不是那么简单,我首先需要检查容器,这有点违背了目的。