了解docker差异

我不明白'docker差异'的输出。 详情请参阅下文。 这是我的Docker版本:

$ docker version Client version: 1.7.1 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 786b29d OS/Arch (client): linux/amd64 Server version: 1.7.1 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 786b29d OS/Arch (server): linux/amd64 

我在/ var / jenkins_home中有一个Jenkins图像,内容如下:

 $ docker run -it --rm jenkins ls /var/jenkins_home init.groovy.d 

然后我开始jenkins填充jenkins数据目录:

 $ docker run --name app -d jenkins 

jenkins开始后,我打电话到容器列出的文件:

 $ docker exec app ls /var/jenkins_home Download metadata.log hudson.model.UpdateCenter.xml identity.key.enc init.groovy.d jobs nodeMonitors.xml nodes plugins secret.key secret.key.not-so-secret secrets updates userContent 

好! 很多新的文件。 现在我想问Docker什么文件被更改或创build:

 $ docker diff app C /tmp A /tmp/hsperfdata_jenkins A /tmp/hsperfdata_jenkins/1 A /tmp/jetty-0.0.0.0-8080-war--any- A /tmp/jffi6440203232202129886.tmp A /tmp/jna--1712433994 A /tmp/winstone874928832634242220.jar C /var C /var/log C /var/log/copy_reference_file.log 

那么为什么'docker diff'没有显示'/ var / jenkins_home'中的新文件? 我究竟做错了什么?

最好的问候, – Morten Green Hermansen,Fanitas

如果您查看Jenkins映像的Dockerfile ,您会注意到有一个VOLUME指令,使位置/var/jenkins_home成为一个卷挂载点。

因此,写入/var/jenkins_home任何数据都将存储在卷挂载点上,而不会存储在容器文件系统本身中。

docker diff命令将仅显示容器文件系统上的差异,并不会显示与卷装载点内容相关的任何内容。

其他docker命令(如commit , cp和export)也是如此 。