问题描述
我必须处理一些用于嵌入式开发的非常大的供应商支持程序包-我已经成功使用了docker,这是为了使它们的安装与我的系统其他部分分开,并且为了环境可复制性。效果很好,但是这些安装通常都是独立的,包括大量我不需要的文件和功能,尤其是在CI环境中。而且,移动庞大且重建缓慢的大型Docker映像很痛苦。
因此,为了只弄清我需要的功能并将其移植到更小的图像上,我想知道:
我可以运行docker映像,执行一些与CI相关的任务,然后找到在docker映像运行期间访问的所有文件吗?
此后的计划是将所有这些文件复制到tarfile或类似文件中,然后在将来用于特殊图像。因此,作为一个替代问题...该计划值得追求吗?
谢谢:)-Chloë
解决方法
也许它不能完全回答您的问题,但是可能会有所帮助。
您可以通过以下方式检查容器中正在发生的事情
- 通过
docker container logs
命令检查其日志。 - 通过
docker diff
命令检查在其文件系统中执行的修改。
这是一个例子
# run a ubuntu container
$ docker run -it --rm --name focal ubuntu:focal
# run a command in the container
$ echo "test" > test.txt
# messages in the logs
$ docker container logs --follow --details focal
# root@aa86b4988bfe:/# echo "test" > test.txt
# checking the differences
$ docker diff focal
# A /test.txt