文件触摸是否在docker容器层中创建副本?

时间:2017-01-19 01:53:38

标签: docker unionfs

如何在docker容器中仅更改文件时间戳(即触摸)? UFS(或使用的varianet)是否会在docker容器层中创建文件副本,还是能够更有效地处理这种情况?

希望在docker的上下文中查明有关文件触摸效果的信息,以及如何最好地管理此方案以减少图层上的累积文件存储大小。

1 个答案:

答案 0 :(得分:2)

这是一个简单的问题,可以通过实验回答。启动容器:

docker run -it ubuntu

触摸某物并退出容器:

root@914f5453af3c:/# touch /bin/ls
root@914f5453af3c:/# exit

将容器保存为新图像:

$ docker commit 914f5453af3c testimage

将图像图层导出到本地目录:

$ mkdir testimage
$ docker save testimage | tar -C testimage -xf-

这将为您提供一个类似于:

的目录
$ ls testimage
15c6fddb70d1d281b7c20cdd5a54be3379c4c282a3e9ba2ae27c79a655ca9ed6
46bda337e95a0163468d9daa3a13ba104507f68186a09cdb2892b20030aeb530
63c22c7d4e3cd1a04ada1a24dd84837c1ce0c445bb48b75ed45f84250146459f
6d1bde67c5695c66882fd71951376e176ba908fc9a560bd8eeb07c4b4797da89
7c05062524dd680596681fb193b3096fcd775da2c0e7e66e0ad580850ee3a973.json
96ab7e8335a8dff5ed0144a46ddbe6ab6c1e76011670cb54efc515c46ea6b09b
fbe2d84b180c3f84eb15754cf95e1a6359a84ed3c6e2f6869f0a2015343611fc
manifest.json
repositories

查看repositories以找到最顶层:

$  cat testimage/repositories

{" testimage" {"最新":" 6d1bde67c5695c66882fd71951376e176ba908fc9a560bd8eeb07c4b4797da89"}}

查看该图层的内容:

$ tar -tf testimage/6d1bde67c5695c66882fd71951376e176ba908fc9a560bd8eeb07c4b4797da89/
layer.tar
bin/
bin/ls
root/
root/.bash_history

在那里,您可以看到由于运行/bin/ls,最顶层的touch副本。