繁体   English   中英

Docker:如何在纯数据容器中设置文件所有权?

[英]Docker: how to set up file ownership in a data-only container?

我已经使用纯数据容器对 PHP 应用程序进行了 dockerized。 我使用了这个( docker-symfony )容器堆栈。

这是纯数据容器的简单定义:

FROM debian:jessie
MAINTAINER Vincent Composieux <vincent.composieux@gmail.com>
VOLUME /var/www/symfony

除了所有权和权限之外,一切都很好。 我注意到,当我将卷(我的本地目录)安装到仅数据容器时,安装的文件仍然归主机上的当前用户所有,而在容器内无法识别。

例如,如果我使用ltarasiewicz docker-compose up作为ltarasiewicz启动容器,然后登录到数据容器,我可以看到挂载的文件的所有权设置为:

drwxrwxr-x 7 1000 1000 4096 Jun 10 21:27 symfony

uidgid1000对应于我的主机的用户uidgid 因为容器内没有这样的用户,所以只显示symfony目录的 ID。 这使得无法运行应用程序。

所以我的问题是如何将卷安装到仅数据容器并为安装的文件分配正确的所有权,例如root:www-data或我选择的任何其他用户。

使用与运行应用程序相同的图像来制作数据容器。 例如,如果您想制作一个 postgresql 数据库,请为您的数据容器使用 postgres 图像:

$ docker run --name dc postgres echo "Data Container"

此命令创建了数据容器并退出 - 请注意,数据容器不会继续运行。

对于 postgres,在您使用卷启动数据库之前,卷所有权不会正确设置:

$ docker run -d --volumes-from dc postgres

但是其他镜像会在 Dockerfile 中正确设置所有权。

当然,如果您只是想修复数据容器中的权限,只需挂载并运行 chown:

$ docker run --volumes-from dc postgres chown -R postgres:postgres /var/lib/postgresql/data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM