如何使用Docker的“git”功能?
UPDATED我特别感兴趣的是我如何运行或回滚到一个特定版本的(二进制)图像从docker,并试图澄清这个问题. Docker FAQ说:
Google可能没有找到没有“回滚”到早期的容器,检查差异等的示例(显然,我可以为版本管理的Dockerfiles做这些事情,但二进制Docker映像/容器即使在由于更新的软件来源,Dockerfile并没有,我正在寻找一种在这些更改之间查看和回滚的方法). 一个基本的例子:想象我跑
在更新基础ubuntu的Docker文件上:
如果我在几天之后建立相同的图像,那么我怎么能区分这些图像来查看哪些软件包已被升级?稍后重新运行相同的构建命令后,如何回滚到早期版本的映像? 最佳答案
编辑:从技术上讲,我们只是回滚AUFS图层,而不是回滚历史.如果我们的工作流由交互式修改我们的容器并使用docker commit提交更改,那么这真的会回滚历史记录,因为它删除了我们在后续层中应用的任何包更新,从而使安装在较早层的版本.如果从Dockerfile重建图像,这是非常不同的.那么这里没有什么可以让我们回到之前的版本,我们只能从Dockerfile中删除步骤(图层).换句话说,我们只能将我们的码头承诺的历史回滚到一个图像.
看来,回滚到早期版本的码头图像的关键是简单地将docker标签指向较早的散列. 例如,考虑检查标准ubuntu的历史:最新图像:
显示:
想象一下,我们想回到哈夫25f所示的图像:
我们看到:
当然,我们可能永远不想以这种方式回滚,因为它使ubuntu:最新的不是我们本地库中最新的ubuntu.请注意,我们可以使用我们想要的任何标签,例如
或者通过哈希简单地启动旧的图像:
那么简单而又整洁请注意,我们可以将其与docker检查结合起来,以获得关于Docker FAQ引用的每个图像的元数据的更多细节. 还要注意,docker diff和docker提交与此进程无关,因为它们是指容器(例如运行图像),而不直接映射到图像.也就是说,如果我们以交互方式运行图像,然后添加或更改图像上的文件,我们可以使用docker diff< Container-id>看到更改(容器之间)并使用docker commit< Container id> ;.提交更改. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |