检查docker容器FS从主机更改

我已经开始了docker集装箱,我修改了一个文件。 稍后,我想从docker主持人那里检查这个变化。 现在我使用docker cp导出文件,检查它,删除它。 但是,这个多步骤的复制 – 读取 – 删除过程似乎过度杀死,如果我只是想读一个文件。

是否有更好的方法来检查docker容器中的文件系统更改?

我需要更多的信息比docker diff显示。

你可以find正在运行的容器的文件系统Docker数据目录,通常是/var/lib/docker/ 。 具体位置取决于使用哪个存储驱动程序 。 在AUFS的情况下,位置是`/ var / lib / docker / aufs / mnt / $ {CONTAINER_ID} /。

 $ HELLO_WORLD=$(docker run -d ubuntu:12.04 /bin/sh -c "while true; do echo Hello world; sleep 1; done") $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2524e196adf0 ubuntu:12.04 /bin/sh -c while tru 4 seconds ago Up 3 seconds naughty_brown $ echo $HELLO_WORLD 2524e196adf0b985e84a22503d5fd1f2110c6a0cf175f12496f11f0043e799fa $ sudo ls /var/lib/docker/aufs/mnt/${HELLO_WORLD}/ bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var 

这不是一个通用的解决scheme,但在特殊情况下,您可以使用装入的卷:

用卷启动容器:

 sudo docker run -v /host_path/shared:/shared <container> 

将要检查的文件存储在容器dir /shared或将&ln文件复制到/shared ,并将所需文件的符号链接存储在/shared

 cp /mydir/myfile /shared/myfile ln -s -f /shared/myfile /mydir/myfile 

然后您可以直接在/host_path/shared检查这些文件。

注意:不能像/etc/passwd/etc/hostname等符号链接特殊文件