2014-02-16 113 views
1

我已经开始码头集装箱并修改了一个文件。稍后我想从码头主持人那里检查这个变化。现在我用docker cp导出文件,检查它,删除它。但是,如果我只是想读取一个文件,这个多步骤复制读取 - 删除过程看起来就像杀了人。检查码头集装箱FS从主机变化

是否有更好的方法检查码头集装箱中的文件系统更改?

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

回答

2

您可以找到正在运行的容器的文件系统Docker数据目录,通常为/var/lib/docker/。具体位置取决于使用哪个storage driver。对于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 
0

这不是一个通用的解决方案,但在特殊情况下,你可以使用已安装的卷:

,体积启动容器:

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