了解docker diff

时间:2015-07-28 13:15:08

标签: docker diff

我不理解' docker diff'的输出。请参阅下文了解详情。 这是我的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更改或创建了哪些文件:

$ 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

1 个答案:

答案 0 :(得分:5)

如果您查看Dockerfile for the Jenkins image,您会注意到有VOLUME指令使位置/var/jenkins_home成为卷装入点。

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

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

这同样适用于其他泊坞窗命令,例如commitcpexport