我是Docker的新手,并尝试使用简单的Dockerfile构建镜像:
FROM jenkins
USER root
RUN mkdir -pv /home/a/b
RUN touch /home/a/b/test.txt
RUN mkdir -pv /var/jenkins_home/a/b
RUN touch /var/jenkins_home/a/b/test.txt
USER jenkins
当我构建它时,它失败并显示以下输出:
Step 0 : FROM jenkins
Step 1 : USER root
Step 2 : RUN mkdir -pv /home/a/b
mkdir: created directory '/home/a'
mkdir: created directory '/home/a/b'
Step 3 : RUN touch /home/a/b/test.txt
Step 4 : RUN mkdir -pv /var/jenkins_home/a/b
mkdir: created directory '/var/jenkins_home/a'
mkdir: created directory '/var/jenkins_home/a/b'
Step 5 : RUN touch /var/jenkins_home/a/b/test.txt
touch: cannot touch '/var/jenkins_home/a/b/test.txt': No such file or directory
谁能告诉我,我在这里想念的是什么?为什么第一个mkdir和touch组合有效,而第二个却无效?
最佳答案
查看https://registry.hub.docker.com/u/library/jenkins/,似乎/var/jenkins_home是一个卷。您只能在容器运行时在此处创建文件,大概是使用诸如
docker run ... -v /your/jenkins/home:/var/jenkins_home ...
docker构建过程对共享卷一无所知。
关于docker - 在mkdir之后触摸文件时,构建Dockerfile失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27469583/