如何使用Docker的“类似于git”的功能?

cboettig

我对如何从docker运行或回滚到(二进制)映像的特定版本特别感兴趣,并尝试对此进行澄清。

泊坞窗常见问题,它说:

Docker包含类似git的功能,用于跟踪容器的连续版本,检查版本之间的差异,提交新版本,回滚等。历史记录还包括容器的组装方式和组装者,因此您可以从生产服务器上获得完全可追溯性一直回到上游开发人员。

就像我可能使用的Google一样,我找不到“回滚”到较早的容器,检查差异等的示例。(显然,我可以对版本管理的Dockerfile进行此类操作,但是即使由于软件源已更新,因此Dockerfile不会,我正在寻找一种查看和回滚此类更改的方法。

举个基本的例子:想象我跑步

docker build -t myimage .

在仅更新基本ubuntu的Dockerfile上:

FROM ubuntu:14:04
RUN apt-get update -q && apt-get upgrade -y

如果几天后生成同一映像,如何区分这些映像以查看升级了哪些软件包?稍后重新运行相同的构建命令后,如何回滚到映像的早期版本?

cboettig

从技术上讲,我们仅回滚AUFS层,而不必回滚历史记录。如果我们的工作流程包括交互地修改容器并使用提交更改docker commit,则确实会回滚历史记录,因为它将删除我们在以后的层中应用的所有软件包更新,而将版本安装在较早的层中。如果我们从Dockerfile重建映像,这是非常不同的。然后,这里没有任何东西可以让我们回到我们以前构建的版本,我们只能从Dockerfile中删除步骤(层)。换句话说,我们只能将docker commits的历史回滚到图像。

回滚到较早版本的docker映像的关键似乎只是将docker标签指向较早的哈希值。

例如,考虑检查history标准ubuntu:latest图像的:

docker history ubuntu:latest

显示:

IMAGE               CREATED             CREATED BY                                      SIZE
ba5877dc9bec        3 weeks ago         /bin/sh -c #(nop) CMD [/bin/bash]               0 B
2318d26665ef        3 weeks ago         /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/   1.903 kB
ebc34468f71d        3 weeks ago         /bin/sh -c rm -rf /var/lib/apt/lists/*          8 B
25f11f5fb0cb        3 weeks ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic   194.5 kB
9bad880da3d2        3 weeks ago         /bin/sh -c #(nop) ADD file:de2b0b2e36953c018c   192.5 MB
511136ea3c5a        14 months ago    

                                               0 B

想象一下,我们想回到由hash表示的图像25f

docker tag 25f ubuntu:latest
docker history ubuntu:latest

我们看到:

IMAGE               CREATED             CREATED BY                                      SIZE
25f11f5fb0cb        3 weeks ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic   194.5 kB
9bad880da3d2        3 weeks ago         /bin/sh -c #(nop) ADD file:de2b0b2e36953c018c   192.5 MB
511136ea3c5a        14 months ago                                                       0 B

当然,我们可能永远都不希望以这种方式回滚,因为它ubuntu:latest实际上并不是本地图书馆中最新的Ubuntu。请注意,我们可以使用所需的任何标签,例如

docker tag 25f ubuntu:notlatest

或只是通过哈希启动旧图像:

docker run -it 25f /bin/bash

如此简单却又如此整洁。请注意,我们可以将其与结合在一起,docker inspect以获取有关Docker FAQ所引用的每个映像的元数据的更多详细信息。

还要注意,docker diff并且docker commit与该过程无关,因为它们是指容器(例如运行的图像),而不是直接指图像。也就是说,如果我们以交互方式运行图像,然后在图像上添加或更改文件,则可以使用查看更改(在容器之间),docker diff <Container-id>使用提交更改docker commit <Container id>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL OR的功能类似于AND

来自分类Dev

Matlab:如何使用帮助下拉菜单向用户显示类似于Matlab的功能输入

来自分类Dev

如何通过(类似于窗口的功能)进行特定分组

来自分类Dev

使用PHP执行“类似于javascript / jQuery的功能”

来自分类Dev

使用folr以“类似于Haskell”的语言映射功能

来自分类Dev

如何使用类似于float之类的内置方法和功能来建立一个类,但保留额外的数据呢?

来自分类Dev

如何使用类似于时间戳的计数器

来自分类Dev

如何使用AHK实现类似于Visual Studio的链接热键?

来自分类Dev

如何使用类似于matlab的python结构数组

来自分类Dev

UiApp中类似于工具提示的功能

来自分类Dev

功能类似于Matlab中的head()

来自分类Dev

类似于MomentJS的Android Apps功能

来自分类Dev

Misra规则19.7:功能类似于宏

来自分类Dev

Twitter评论功能类似于Facebook?

来自分类Dev

功能类似于Matlab中的head()

来自分类Dev

类似于Android中的StorageItemAccessList功能

来自分类Dev

类似于seaborn在plotly中的色调功能?

来自分类Dev

如何Git区分两个分支但显示类似于Git commit的输出?

来自分类Dev

如何获得类似于iOS本机邮件应用程序的删除功能

来自分类Dev

如何在Altera FPGA中实现类似于Xilinx的RLOC的功能?

来自分类Dev

如何在Python中具有类似于Javascript回调的功能

来自分类Dev

如何在Xamarin.Forms中创建类似于日志记录控件的功能

来自分类Dev

如何在SwiftUI中实现自定义回调动作?类似于onAppear功能

来自分类Dev

如何在C语言中设计类似于gem5的调试功能?

来自分类Dev

如何将* NIX终端设置为类似于IDE的功能?

来自分类Dev

Golang:尝试使用类似于python的zip功能创建名称,年龄元组

来自分类Dev

如何实现类似于SO的url重写

来自分类Dev

如何删除Aff(类似于Eff的unsafePerformEff)?

来自分类Dev

如何创建类似于ForEach的方法

Related 相关文章

  1. 1

    SQL OR的功能类似于AND

  2. 2

    Matlab:如何使用帮助下拉菜单向用户显示类似于Matlab的功能输入

  3. 3

    如何通过(类似于窗口的功能)进行特定分组

  4. 4

    使用PHP执行“类似于javascript / jQuery的功能”

  5. 5

    使用folr以“类似于Haskell”的语言映射功能

  6. 6

    如何使用类似于float之类的内置方法和功能来建立一个类,但保留额外的数据呢?

  7. 7

    如何使用类似于时间戳的计数器

  8. 8

    如何使用AHK实现类似于Visual Studio的链接热键?

  9. 9

    如何使用类似于matlab的python结构数组

  10. 10

    UiApp中类似于工具提示的功能

  11. 11

    功能类似于Matlab中的head()

  12. 12

    类似于MomentJS的Android Apps功能

  13. 13

    Misra规则19.7:功能类似于宏

  14. 14

    Twitter评论功能类似于Facebook?

  15. 15

    功能类似于Matlab中的head()

  16. 16

    类似于Android中的StorageItemAccessList功能

  17. 17

    类似于seaborn在plotly中的色调功能?

  18. 18

    如何Git区分两个分支但显示类似于Git commit的输出?

  19. 19

    如何获得类似于iOS本机邮件应用程序的删除功能

  20. 20

    如何在Altera FPGA中实现类似于Xilinx的RLOC的功能?

  21. 21

    如何在Python中具有类似于Javascript回调的功能

  22. 22

    如何在Xamarin.Forms中创建类似于日志记录控件的功能

  23. 23

    如何在SwiftUI中实现自定义回调动作?类似于onAppear功能

  24. 24

    如何在C语言中设计类似于gem5的调试功能?

  25. 25

    如何将* NIX终端设置为类似于IDE的功能?

  26. 26

    Golang:尝试使用类似于python的zip功能创建名称,年龄元组

  27. 27

    如何实现类似于SO的url重写

  28. 28

    如何删除Aff(类似于Eff的unsafePerformEff)?

  29. 29

    如何创建类似于ForEach的方法

热门标签

归档