我正在使用Docker,并且我想挂载一个变化很大的动态文件夹(因此我不必为每次执行都制作一个Docker映像,这会太昂贵),但是我希望该文件夹是只读的。将文件夹所有者更改为其他人可行。但是,chown需要root访问权限,而我不希望将其公开给应用程序。
chown
root
当我使用-vflag进行挂载时,它将提供我提供的任何用户名,我在docker映像内创建了一个非root用户,但是,该卷中的所有文件都以运行docker的用户作为所有者,更改为我从命令行给,所以我不能制作只读文件和文件夹。我该如何预防?
-v
我还添加了mustafa ALL=(docker) NOPASSWD: /usr/bin/docker,因此我可以通过终端更改为另一个用户,但是文件仍然具有我的用户的权限。
mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
您可以通过附加:ro到-v开关来指定卷应为只读:
:ro
docker run -v volume-name:/path/in/container:ro my/image
请注意,文件夹然后在容器中是只读的,并且在主机上是可读写的。
根据“ 使用卷”文档,现在存在另一种通过使用--mount交换机挂载卷的方法。这是通过只读方式使用的方法:
--mount
$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image
这是一个示例,该示例如何在中指定只读容器docker-compose:
docker-compose
version: "3" services: redis: image: redis:alpine read_only: true