我已经开始码头集装箱并修改了一个文件。稍后我想从码头主持人那里检查这个变化。现在我用docker cp
导出文件,检查它,删除它。但是,如果我只是想读取一个文件,这个多步骤复制读取 - 删除过程看起来就像杀了人。检查码头集装箱FS从主机变化
是否有更好的方法检查码头集装箱中的文件系统更改?
我需要比docker diff
更多的信息显示。
我已经开始码头集装箱并修改了一个文件。稍后我想从码头主持人那里检查这个变化。现在我用docker cp
导出文件,检查它,删除它。但是,如果我只是想读取一个文件,这个多步骤复制读取 - 删除过程看起来就像杀了人。检查码头集装箱FS从主机变化
是否有更好的方法检查码头集装箱中的文件系统更改?
我需要比docker diff
更多的信息显示。
您可以找到正在运行的容器的文件系统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
这不是一个通用的解决方案,但在特殊情况下,你可以使用已安装的卷:
,体积启动容器:
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
等