在使用gcloud控制台创建的Container Optimized OS [COS]上的GCP计算实例中安装磁盘

问题描述

所以我正在使用此gcloud控制台命令从容器映像创建实例

gcloud compute instances create-with-container test-instance \
--zone us-xx \
--container-image asia.gcr.io/my-project/my-docker-image \
--container-privileged \
--network my-network \
--subnet my-net-sub \
--create-disk name=test-data,device-name=test-data,auto-delete=yes,size=200GB,type=pd-ssd \
--container-mount-disk name=test-data,mount-path=/mnt/disks/data \
--service-account me@myproject.iam.gserviceaccount.com

可以正常工作并创建实例,但不会装入数据磁盘。为什么? 更确切地说,要添加数据磁盘,我需要

  • 创建整个磁盘的单个分区并创建ext4文件系统
  • 并将磁盘安装在给定路径上

如何使用ext4指定创建分区,然后安装分区部分?

解决方法

您不能将主机的磁盘安装到容器上(两者都使用相同的磁盘)。 You can however mount a directory or another disk。无论哪种方式,您都可以在其上存储数据,并且两个OS(主机和容器)都可以从中读取/写入。

比方说,您要将所有数据存储在/datadir/的主机OS磁盘中,并且希望将其安装在/mnt/disks/data下的容器内。在下面,您将找到完整的(经过测试的)示例以供使用:

gcloud compute instances create-with-container mytestvm1 \
--zone=europe-west3-c \
--container-image=gcr.io/google-containers/mycontainer \
--container-privileged \
--network default \
--subnet default \
--create-disk name=test-data,device-name=test-data,auto-delete=yes,size=20GB,type=pd-ssd \
--container-mount-host-path=mount-path=/mnt/disks/data,host-path=/home/myhomedir/,mode=rw \
--service-account=my_service_account@developer.gserviceaccount.com

如果您需要安装另一个磁盘,则只需更改以下行:

--container-mount-host-path=mount-path=/mnt/disks/data,mode=rw \

--container-mount-disk=mount-path=/mnt/disks/data,name=data1,mode=rw \

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...