我试图弄清楚挂载如何在 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 创建的可执行文件?
谢谢