dfl*_*str 32 linux filesystems lxc docker
我希望能够检查 Docker 容器的内容(只读)。一个优雅的方法是将容器的内容挂载到一个目录中。我说的是在主机上安装容器的内容,而不是在容器内的主机上安装文件夹。
我可以看到现在 Docker 中有两个存储驱动程序:aufs 和 btrfs。我自己的 Docker 安装使用 btrfs,浏览到 /var/lib/docker/btrfs/subvolumes 会显示系统上每个 Docker 容器的一个目录。然而,这是 Docker 的一个实现细节,在其他地方挂载 --bind 这些目录感觉是错误的。
是否有正确的方法来执行此操作,或者我是否需要修补 Docker 以支持这些类型的安装?
lak*_*tak 16
看看docker export
。
要快速列出容器中的文件:
docker export CONTAINER|tar -t
Run Code Online (Sandbox Code Playgroud)
导出:
docker export CONTAINER>snapshot.tar
docker export CONTAINER|tar x PATH-IN-CONTAINER
Run Code Online (Sandbox Code Playgroud)
或者查看一个文件:
docker export CONTAINER|tar x --to-stdout PATH-IN-CONTAINER
# e.g.
docker export consul|tar x --to-stdout etc/profile
Run Code Online (Sandbox Code Playgroud)
Docker 1.8 支持 cp:
https://docs.docker.com/reference/commandline/cp/
Usage: docker cp [options] CONTAINER:PATH LOCALPATH|-
docker cp [options] LOCALPATH|- CONTAINER:PATH
Run Code Online (Sandbox Code Playgroud)
更新:当你运行它时,你应该 ssh 到你的 docker 机器。
小智 2
您可以使用 nsenter 在容器/命名空间内运行检查程序(可能必须已包含在容器中)。但是要挂载容器文件系统,如其内部所示,您必须挂载原始映像和所有层(如果是 aufs),或者对设备映射器、btrfs 和使用的其他(未来)存储引擎进行等效操作,每种情况都不同。让 docker 完全按照预期的那样为您完成工作,并使用 nsenter 在容器内部进行检查可能会更有效。
还有其他方法。如果您想查看更改的内容而不是原始映像中的内容,docker diff 将显示该容器中更改的文件。
对于必须持久且可检查的数据,可能更好的模式是将其放在容器中的卷中,并将其安装在真实文件系统上,或者安装在纯数据容器中,或者安装在同一个容器中,但是您可以启动另一个容器,并使用从中安装这些卷的检查程序。
归档时间: |
|
查看次数: |
29115 次 |
最近记录: |