为什么 chown 在 Dockerfile 中不起作用? [英] why doesn't chown work in Dockerfile?

查看:172
本文介绍了为什么 chown 在 Dockerfile 中不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 Dockerfile 创建了一个目录,chown's it,然后列出该目录.该目录仍由 root 拥有.这是为什么?

My Dockerfile creates a directory, chown's it, and then lists the directory afterwards. The directory is still owned by root. Why is that?

这是 Dockerfile:

Here is the 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"的输出:

Here is the output from "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

Docker version 1.2.0, build fa7b24f

主机运行 Ubuntu 12.04,但具有 3.13.0-36 通用内核.

The host runs Ubuntu 12.04, but with a 3.13.0-36-generic kernel.

推荐答案

回答我自己的问题:它被声明为一个卷.如果去掉VOLUME指令,chown就生效了.

Answering my own question: it's declared to be a volume. If you take out the VOLUME instruction, the chown takes effect.

此外,如果您在运行 chown 之后声明音量,则 chown 设置仍然有效.

What's more, if you declare the volume after running chown, the chown settings remain in effect.

这篇关于为什么 chown 在 Dockerfile 中不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆