Docker两个容器之间的区别

时间:2014-10-07 06:53:46

标签: docker docker-container

如何使用Docker客户端找到两个正在运行的容器之间的区别?我有一个图像作为多个实例运行,后来我在实例中更改/安装了新包并丢失了跟踪。有没有办法可以找到这些运行容器之间的差异?

2 个答案:

答案 0 :(得分:4)

你必须检查容器

docker inspect CONTAINER_1
docker inspect CONTAINER_2

找到每个片段的片段

" Id":" cc502eeb69968c9b80c029f8124333d725ee124db4357de69786bc9bdf3a8088",

然后使用两个ID,您可以比较文件夹

  

/ var / lib / docker / aufs / mnt / CONTAINER_1 vs / var / lib / docker / aufs / mnt / CONTAINER_2

答案 1 :(得分:3)

您正在寻找docker diff命令,该命令列出了自创建以来对容器文件系统所做的更改。

以此示例创建名为 so-26230214 的新容器,然后添加文件/tmp/foo.txt,最后删除/etc/default/ntpdate

$ docker run -it --name so-26230214 base bash -il
root@b33340ce7b9f:/# echo "foo" > /tmp/foo.txt
root@b33340ce7b9f:/# rm /etc/default/ntpdate
root@b33340ce7b9f:/# logout

docker diff命令打印出来:

$ docker diff so-26230214
C /etc
C /etc/default
D /etc/default/ntpdate
C /root
A /root/.bash_history
C /tmp
A /tmp/foo.txt

详细说明哪些文件 C 被挂起, A dded或 D 等等。

如果您需要有关这些文件中更改内容的详细信息,那么除了使用docker export导出容器文件系统或使用docker cp导出单个文件之外别无其他选择并检查它们。

请注意,docker exportdocker cp只会显示属于容器文件系统的文件,因此这些命令无法让您访问{{3}中的文件}。