我对码头工人来说是全新的。我有一个关于码头图像的快速问题。
假设我已经安装了某个软件/服务器的本地docker镜像。所以现在我需要在这里设置一个检查点/快照,然后在这个检查点之后完成的所有工作都是临时的;这意味着在某个时间,我会恢复原始图像(从该检查点)并覆盖临时图像中的所有内容。
我的第一个问题是上述用例是否有意义? 我的第二个问题,如果以上有意义,那么检查点的方法是什么(简单来说,如何保持检查点图像只在本地磁盘空间中,不涉及云回购)以及如何恢复图像以覆盖需要时的临时图像。
虽然我已经阅读了一些docker文档,但我仍然在概念性方面苦苦挣扎。
答案 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
正如您所问,您对此容器所做的任何进一步更改都可以提交以形成新图片或可以忽略。
希望它有所帮助。