如何使用Docker客户端找到两个正在运行的容器之间的区别?我有一个图像作为多个实例运行,后来我在实例中更改/安装了新包并丢失了跟踪。有没有办法可以找到这些运行容器之间的差异?
答案 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 export
和docker cp
只会显示属于容器文件系统的文件,因此这些命令无法让您访问{{3}中的文件}。