10

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

4

2 回答 2

6

你必须检查容器

docker inspect CONTAINER_1
docker inspect CONTAINER_2

找到每个片段

"id": "cc502eeb69968c9b80c029f8124333d725ee124db4357de69786bc9bdf3a8088",

然后使用拖车 ID,您可以比较文件夹

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

于 2014-10-08T13:09:22.773 回答
6

您正在寻找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挂起、添加D删除。

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

请注意,docker export并且docker cp只会向您显示属于容器文件系统的文件,因此这些命令不会让您访问volumes中的文件。

于 2014-10-07T09:08:22.117 回答