检查来自主机的 docker 容器 FS 更改



我已经启动了一个docker容器,并且修改了一个文件。稍后,我想从 docker 主机检查此更改。现在我使用 docker cp 导出文件、检查文件、删除文件。但是,如果我只想读取文件,这个多步骤的复制-读取-删除过程似乎已经结束了。

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

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

您可以在

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

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

使用卷启动容器:

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

将要检查的文件存储在容器目录中/shared或将 & ln 文件复制到/shared,并使所需文件成为存储在/shared中的文件的符号链接。

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

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

注意:您不能以符号方式链接特殊文件,如/etc/passwd/etc/hostname等。

相关内容

  • 没有找到相关文章

最新更新