为什么 chown 在 Dockerfile 中不起作用?

新手上路,请多包涵

我的 Dockerfile 创建了一个目录,chown’s it,然后列出该目录。该目录仍归根用户所有。这是为什么?

这是 Dockerfile:

 FROM ubuntu:precise
RUN useradd -d /home/testuser -m -s /bin/bash testuser
RUN mkdir -p /var/local/testrunner/logs
VOLUME ["/var/local/testrunner/logs"]
RUN grep testuser /etc/passwd
RUN grep root /etc/passwd
RUN chown -R testuser:testuser /var/local/testrunner/logs
RUN ls -ld /var/local/testrunner/logs

这是“docker build”的输出:

 Sending build context to Docker daemon 10.24 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:precise
 ---> ab8e2728644c
Step 1 : RUN useradd -d /home/testuser -m -s /bin/bash testuser
 ---> Using cache
 ---> 640f12671c86
Step 2 : RUN mkdir -p /var/local/testrunner/logs
 ---> Using cache
 ---> bf7756fd5b1f
Step 3 : VOLUME ["/var/local/testrunner/logs"]
 ---> Using cache
 ---> 65c73ee76c20
Step 4 : RUN grep testuser /etc/passwd
 ---> Using cache
 ---> db72fff0b965
Step 5 : RUN grep root /etc/passwd
 ---> Running in ebff78df7a9a
root:x:0:0:root:/root:/bin/bash
 ---> ead0ff704a59
Removing intermediate container ebff78df7a9a
Step 6 : RUN chown -R testuser:testuser /var/local/testrunner/logs
 ---> Running in c925f67b2ab4
 ---> 253132be935e
Removing intermediate container c925f67b2ab4
Step 7 : RUN ls -ld /var/local/testrunner/logs
 ---> Running in 978bc66aa47e
drwxr-xr-x 2 root staff 4096 Oct  1 15:15 /var/local/testrunner/logs

Docker 版本 1.2.0,构建 fa7b24f

主机运行 Ubuntu 12.04,但使用 3.13.0-36-generic 内核。

原文由 user100464 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

回答我自己的问题:它被宣布为一卷。如果取出 VOLUME 指令,则 chown 生效。

更重要的是,如果您在运行 chown 声明音量,则 chown 设置仍然有效。

原文由 user100464 发布,翻译遵循 CC BY-SA 3.0 许可协议

此博客 http://container42.com/2014/11/03/docker-indepth-volumes/ 详细解释了此行为。

Dockerfile 中的每条指令都会创建一个新容器。该指令对该容器进行一些更改并成为一个新层。在对实际容器文件系统进行 VOLUME 指令之前对“/var/local/testrunner/logs”所做的更改。但是,在 VOLUME 指令之后,目录“/var/local/testrunner/logs”是挂载的目录。在 VOLUME 指令之后对该目录所做的更改将应用于已挂载的目录,而不是实际的容器文件系统。

原文由 hobgoblin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题