gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:34:20 31 4
gpt4 key购买 nike

我的 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 通用内核。

最佳答案

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

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

关于docker - 为什么 chown 在 Dockerfile 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145351/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com