问题描述
所以我正在使用此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 \