0

我试图弄清楚挂载如何在 GCE 中使用 hello-world 程序工作。我有一个现有的图像,当我在 GCE 中创建一个 VM 实例时,我选择了这个现有的图像。对于命令,我echo使用参数输入"hello world"。当虚拟机启动时,我可以在日志中看到这个打印,所以我知道它运行正常。

在创建 VM 实例之前,我创建了一个标准的永久性磁盘。创建 VM 时,我选择了“添加卷”。我为该卷指定了这些详细信息:

  • 卷类型:磁盘
  • 挂载路径:/hello-world-data
  • 磁盘名称:hello-world-test
  • 分割:
  • 模式:读/写

在我的 VM 运行并在日志中看到“hello world”后,我转到 VM 实例页面并在实例上选择“SSH”。这成功地打开了一个云终端,并且我看到了正确读取<username>@hello-world-test-instance ~ $.

ls -la,而且我没有看到我指定的音量:/hello-world-data

我想也许它在创建时会存在,所以我尝试:

cd /
mkdir hello-world-data

但我得到这个错误:

mkdir: cannot create directory ‘hello-world-data’: Read-only file system

现在我很困惑。我创建了一个磁盘,指定了一个挂载路径,并选择了读/写。这是怎么回事?

经过一番探索,我看到这条路径存在:

/mnt/disks/gce-containers-mounts/gce-persistent-disks/hello-world-test

那是什么?没有文档告诉我这个多目录的深层路径。我看看我是否至少可以在该目录中写入任何内容:

$ cd /mnt/disks/gce-containers-mounts/gce-persistent-disks/hello-world-test
$ touch test.txt
touch: cannot touch 'test.txt': Permission denied

最重要的是,我什至看不到由我的 Dockerfile 创建的可执行文件应该放在/bin目录中。

所以,我迷路了。哪里来的音量?为什么不在指定的挂载路径?为什么不/bin包含 Dockerfile 创建的可执行文件?

谢谢

4

1 回答 1

1

答案是,当您通过 SSH 连接到 VM 实例时,您是在将自己放入主机中,而不是直接放入容器中。

进入主机后,您可以通过docker ps查找容器 ID 进入容器,然后执行docker exec -it <container-id> bash(如果您的容器安装了 bash)。

于 2020-08-25T00:42:44.057 回答