2017-06-15 28 views
1

我对码头工人来说是全新的。我有一个关于码头图像的简单问题。恢复预先配置的码头图像的方法

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

我的第一个问题是如果上述用例有意义吗?
我的第二个问题是,如果上述说法有道理,那么做检查点的方法是什么(简单地说,因为我只将检查点图像保存在本地磁盘空间中,没有涉及云回购),以及如何还原图像以覆盖所有内容在需要时临时图像中。

尽管我已经阅读了一些docker文档,但仍然在概念性的东西中挣扎。

回答

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 
0

据我知道有没有像检查点左右,相对于多克。但是,您可以将容器上执行的操作保存为图像以创建新图像。

给予一个例子有更好的理解

让我们使用碱Ubuntu的图像运行一个容器,并创建所述容器内的文件夹:在退出容器的

#docker run -it ubuntu:14.04 /bin/bash 
[email protected]:/# 
[email protected]:/# cd /root 
[email protected]:~# ls 
[email protected]:~# mkdir TEST_DIR 
[email protected]:~# 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 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 
[email protected]:/# cd /root/ 
[email protected]:~# ls 
TEST_DIR 
[email protected]:~# exit 

正如你所问,任何进一步的改变,你这个容器要么可以致力于形成新的图像或可忽略不计上做。

希望它有帮助。