恢复预配置的泊坞窗图像的方法

时间:2017-06-15 03:54:18

标签: docker repository backup restore snapshot

我对码头工人来说是全新的。我有一个关于码头图像的快速问题。

假设我已经安装了某个软件/服务器的本地docker镜像。所以现在我需要在这里设置一个检查点/快照,然后在这个检查点之后完成的所有工作都是临时的;这意味着在某个时间,我会恢复原始图像(从该检查点)并覆盖临时图像中的所有内容。

我的第一个问题是上述用例是否有意义? 我的第二个问题,如果以上有意义,那么检查点的方法是什么(简单来说,如何保持检查点图像只在本地磁盘空间中,不涉及云回购)以及如何恢复图像以覆盖需要时的临时图像。

虽然我已经阅读了一些docker文档,但我仍然在概念性方面苦苦挣扎。

2 个答案:

答案 0 :(得分:1)

即使您可以考虑managing data in container or volume (or host folder mounted in the container),这也很有意义 这样,即使停止并重新启动容器,数据仍然是持久的。

  

执行该检查点的方法是什么

如果您的容器没有安装卷,并且其数据位于其中,则是,停止并删除容器将丢失该数据。

一种可能性是使用docker commit创建快照 这会将容器状态冻结为新图像,以后可以运行。

示例:

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS              NAMES
c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            desperate_dubinsky
197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            focused_hamilton

$ docker commit c3f279d17e0a  svendowideit/testimage:version3

f5283438590d

$ docker images

REPOSITORY                        TAG                 ID                  CREATED             SIZE
svendowideit/testimage            version3            f5283438590d        16 seconds ago      335.7 MB

答案 1 :(得分:0)

据我所知,对于Docker而言,没有像checkpoint那样的东西。但是你可以将对容器执行的操作保存为图像以创建新的图像。

提供示例以便更好地理解

让我们使用基础Ubuntu Image运行一个容器,并在容器内创建一个文件夹:

#docker run -it ubuntu:14.04 /bin/bash
root@58246867493d:/# 
root@58246867493d:/# cd /root
root@58246867493d:~# ls
root@58246867493d:~# mkdir TEST_DIR
root@58246867493d:~# exit

已退出容器的状态:

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
58246867493d        ubuntu:14.04        "/bin/bash"         2 minutes ago       Exited (127) 57 seconds ago                       hungry_turing

现在您可以提交更改,以便将容器保存到新的Docker镜像中:

#docker commit 58246867493d ubuntu:15.0       

获取泊坞窗图像

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
**ubuntu              15.0                acac1f3733b2        10 seconds ago      188MB**
ubuntu              14.04               132b7427a3b4        10 hours ago        188MB

运行新构建的图片,查看上一个容器中提交的更改。

# docker run -it ubuntu:15.0 /bin/bash
root@3a48af5eaec9:/# cd /root/
root@3a48af5eaec9:~# ls
TEST_DIR
root@3a48af5eaec9:~# exit

正如您所问,您对此容器所做的任何进一步更改都可以提交以形成新图片或可以忽略

希望它有所帮助。