如果我使用:
FROM jenkins/jenkins:lts
RUN ls -l /var/jenkins_home/; touch /var/jenkins_home/isthisworking; echo "================================"; ls -l /var/jenkins_home;
在构建映像的最后一个isthisworking
命令中,我实际上看到了ls -l
。在运行容器时,将删除此文件。为什么?
答案 0 :(得分:1)
如果要为该用户修改ssh资源,请使用“ USER jenkins”
您尝试从不属于您的docker容器的网络中获取IP。您的docker容器上的主机是两个分割的网络
答案 1 :(得分:0)
我想我知道发生了什么事。这是我用来弄清楚发生了什么的Dockerfile(从上面复制):
FROM jenkins/jenkins:lts
RUN ls -l /var/jenkins_home/; touch /var/jenkins_home/isthisworking; echo "================================"; ls -l /var/jenkins_home;
如前所述,有了该文件,在构建时,我会看到文件isthisworking
,但是当我运行容器时,该文件不再存在。
因此,我去了jenkins / jenkins:lts github页面,并查看了他们的Dockerfile。我在第26行看到了this:
# Jenkins home directory is a volume, so configuration and build history
# can be persisted and survive image upgrades
VOLUME $JENKINS_HOME
在这里,$JENKINS_HOME
是/var/jenkins_home/
。因此,作为Docker菜鸟,我问自己VOLUME
是什么(我从命令行知道它是什么,但在Dockerfile内部却不知道)?通过谷歌搜索,我发现this和this基本上说:
docker run命令使用以下命令初始化新创建的卷 基本图片中指定位置上存在的数据。
这回答了我所有的问题。由于该位置是一个VOLUME,所以无论我以何种方式以及如何将文件复制到其中,在容器运行时,该位置都将重新初始化为基础图像是如何“定义”的。