Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何在GCE中使用容器优化映像创建非root所有的绑定装载_Docker_Google Cloud Platform_Google Compute Engine_Gce Persistent Disk - Fatal编程技术网

Docker 如何在GCE中使用容器优化映像创建非root所有的绑定装载

Docker 如何在GCE中使用容器优化映像创建非root所有的绑定装载,docker,google-cloud-platform,google-compute-engine,gce-persistent-disk,Docker,Google Cloud Platform,Google Compute Engine,Gce Persistent Disk,我正在使用gcloud compute instances create with container工具在GCE中创建一个虚拟机,我想在其中运行docker映像。为此,我使用了谷歌的容器优化操作系统图像之一。我正在尝试连接磁盘,因为我需要在docker容器中保存持久数据。为此,我使用了国旗 我遇到的问题是,磁盘被装载为docker容器(以及主机VM)中root拥有的文件夹,而我的容器进程无法写入磁盘。有办法解决这个问题吗?我也尝试过使用--容器装载主机路径,但运气不好。我尝试连接到docker

我正在使用
gcloud compute instances create with container
工具在GCE中创建一个虚拟机,我想在其中运行docker映像。为此,我使用了谷歌的容器优化操作系统图像之一。我正在尝试连接磁盘,因为我需要在docker容器中保存持久数据。为此,我使用了国旗

我遇到的问题是,磁盘被装载为docker容器(以及主机VM)中root拥有的文件夹,而我的容器进程无法写入磁盘。有办法解决这个问题吗?我也尝试过使用
--容器装载主机路径
,但运气不好。我尝试连接到docker主机,并
chown
将文件夹添加到docker容器中用户的uid中,但当VM重新创建时,文件夹再次归root所有,因此这不是一个永久解决方案


简而言之,这个
--容器挂载磁盘
功能应该如何用于docker容器中的非root用户?

在您的测试中,假设您挂载到/app。。。目录/应用程序是否已存在?如果是,谁拥有它,拥有什么权限?如果您还没有/app目录,那么如果您在映像中创建了它并将其用于容器,该怎么办?这会有区别吗?当你说“目录是否已经存在”时,你的意思是作为图像的一部分?或者你是说在我测试的运行容器中?如果是前者,我不知道,我认为它被定义为dockerfile中的卷。如果是后者,则该文件夹确实存在。由root拥有权限drwxr xr XT这是一个映像,我的想法是,如果您在容器中的/app处装载卷,并且该目录(/app)不存在,docker可以创建它,由root拥有权限755。我想我听到你说的是,你要么想让拥有755权限的其他用户拥有/app,要么仍然由拥有更多权限的root用户拥有(例如777)。我想知道的是。。。装载点(/app)是否需要在创建容器实例的映像中预先存在并具有所需的权限?您如何使用
容器装载磁盘
命令对要附加的Google磁盘进行分区和格式化?很可能磁盘上的文件系统归root所有,并且您尚未为其他用户(非root用户)设置文件系统的权限。使用bash连接到容器。运行
ls-l
并检查所有者、组和权限。使用sudo chmod等并更改它们。创建具有正确所有权和权限的工作目录。重新启动计算实例并验证更改是否有效。在测试中,假设您已装载到/app。。。目录/应用程序是否已存在?如果是,谁拥有它,拥有什么权限?如果您还没有/app目录,那么如果您在映像中创建了它并将其用于容器,该怎么办?这会有区别吗?当你说“目录是否已经存在”时,你的意思是作为图像的一部分?或者你是说在我测试的运行容器中?如果是前者,我不知道,我认为它被定义为dockerfile中的卷。如果是后者,则该文件夹确实存在。由root拥有权限drwxr xr XT这是一个映像,我的想法是,如果您在容器中的/app处装载卷,并且该目录(/app)不存在,docker可以创建它,由root拥有权限755。我想我听到你说的是,你要么想让拥有755权限的其他用户拥有/app,要么仍然由拥有更多权限的root用户拥有(例如777)。我想知道的是。。。装载点(/app)是否需要在创建容器实例的映像中预先存在并具有所需的权限?您如何使用
容器装载磁盘
命令对要附加的Google磁盘进行分区和格式化?很可能磁盘上的文件系统归root所有,并且您尚未为其他用户(非root用户)设置文件系统的权限。使用bash连接到容器。运行
ls-l
并检查所有者、组和权限。使用sudo chmod等并更改它们。创建具有正确所有权和权限的工作目录。重新启动计算实例并验证更改是否有效。