文件触摸在Docker容器层中创build副本吗?
如何在Docker容器中仅更改文件时间戳(即触摸)? UFS(或者所使用的variablesnetworking)会在Docker容器层创build一个文件副本还是能够更有效地处理这种情况?
在Docker的上下文中查找有关文件触摸效果的信息,以及如何最好地pipe理此场景以减less累积文件存储在各个层次上的占用空间。
这是一个很容易回答的问题。 启动一个容器:
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
的结果。