一尘不染

Docker,将卷挂载为只读

docker

我正在使用Docker,并且我想挂载一个变化很大的动态文件夹(因此我不必为每次执行都制作一个Docker映像,这会太昂贵),但是我希望该文件夹是只读的。将文件夹所有者更改为其他人可行。但是,chown需要root访问权限,而我不希望将其公开给应用程序。

当我使用-vflag进行挂载时,它将提供我提供的任何用户名,我在docker映像内创建了一个非root用户,但是,该卷中的所有文件都以运行docker的用户作为所有者,更改为我从命令行给,所以我不能制作只读文件和文件夹。我该如何预防?

我还添加了mustafa ALL=(docker) NOPASSWD: /usr/bin/docker,因此我可以通过终端更改为另一个用户,但是文件仍然具有我的用户的权限。


阅读 1760

收藏
2020-06-17

共1个答案

一尘不染

您可以通过附加:ro-v开关来指定卷应为只读:

docker run -v volume-name:/path/in/container:ro my/image

请注意,文件夹然后在容器中是只读的,并且在主机上是可读写的。

2018编辑

根据“ 使用卷”文档,现在存在另一种通过使用--mount交换机挂载卷的方法。这是通过只读方式使用的方法:

$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image

码头工人组成

这是一个示例,该示例如何在中指定只读容器docker-compose

version: "3"
services:
  redis:
    image: redis:alpine
    read_only: true
2020-06-17