Import docker将更改还原到容器

Import docker将更改还原到容器,import,load,save,export,docker,Import,Load,Save,Export,Docker,我正在尝试快照docker容器,以便可以恢复到单个时间点 我已经看过了docker save和docker export,但它们似乎都不是我想要的。我遗漏了什么吗?您可能需要使用。此命令将从一个docker容器创建新的docker图像。通过这种方式,您可以方便地在以后基于该新图像创建一个新容器 请注意,docker commit命令不会保存存储在docker中的任何数据。对于那些你需要做的 例如,如果您正在使用以下Dockerfile,它声明了一个卷,并将每隔5秒将日期写入两个文件(一个在卷中

我正在尝试快照docker容器,以便可以恢复到单个时间点

我已经看过了
docker save
docker export
,但它们似乎都不是我想要的。我遗漏了什么吗?

您可能需要使用。此命令将从一个docker容器创建新的docker图像。通过这种方式,您可以方便地在以后基于该新图像创建一个新容器

请注意,
docker commit
命令不会保存存储在docker中的任何数据。对于那些你需要做的


例如,如果您正在使用以下Dockerfile,它声明了一个卷,并将每隔5秒将日期写入两个文件(一个在卷中,另一个不在卷中):

从中构建图像:

$ docker build --force-rm -t so-26323286 .
并从中运行一个新容器:

$ docker run -d so-26323286
请稍等,以便运行的docker容器有机会将日期写入两个文件几次

$ docker ps
CONTAINER ID        IMAGE                COMMAND                CREATED             STATUS              PORTS               NAMES
07b094be1bb2        so-26323286:latest   "/bin/sh -c 'while t   5 seconds ago       Up 5 seconds                            agitated_lovelace
然后将容器提交到新映像中
so-26323286:snapshot1

$ docker commit agitated_lovelace so-26323286:snapshot1
您现在可以看到有两个可用的图像:

$ docker images | grep so-26323286
so-26323286                    snapshot1           03180a816db8        19 seconds ago      175.3 MB
so-26323286                    latest              4ffd141d7d6f        9 minutes ago       175.3 MB
现在,让我们验证从
so-26323286:snapshot1
运行的新容器是否具有
/tmp/bar.txt
文件:

$ docker run --rm so-26323286:snapshot1 cat /tmp/bar.txt
Sun Oct 12 09:00:21 UTC 2014
Sun Oct 12 09:00:26 UTC 2014
Sun Oct 12 09:00:31 UTC 2014
Sun Oct 12 09:00:36 UTC 2014
Sun Oct 12 09:00:41 UTC 2014
Sun Oct 12 09:00:46 UTC 2014
Sun Oct 12 09:00:51 UTC 2014
并见证这样一个容器没有任何
/data/foo.txt
文件(因为
/data
是一个数据卷):

最后,如果要访问第一个(仍在运行)容器中的
/data/foo.txt
文件,可以使用docker run
--volumes from
选项:

$ docker run --rm --volumes-from agitated_lovelace base cat /data/foo.txt
Sun Oct 12 09:00:21 UTC 2014
Sun Oct 12 09:00:26 UTC 2014
Sun Oct 12 09:00:31 UTC 2014
Sun Oct 12 09:00:36 UTC 2014
Sun Oct 12 09:00:41 UTC 2014
Sun Oct 12 09:00:46 UTC 2014
Sun Oct 12 09:00:51 UTC 2014
Sun Oct 12 09:00:56 UTC 2014
Sun Oct 12 09:01:01 UTC 2014
Sun Oct 12 09:01:06 UTC 2014
Sun Oct 12 09:01:11 UTC 2014
Sun Oct 12 09:01:16 UTC 2014

下面是一个如何使用Docker Hub的
hello world
图像的示例

首先运行hello world映像,从而下载映像:

docker run hello-world 
然后得到你想要得到的图像的哈希值

docker history hello-world
您将看到如下内容:

IMAGE               CREATED
fce289e99eb9        15 months ago 
REPOSITORY          TAG                 IMAGE ID            CREATED    SIZE 
hello-world         SNAPSHOT-1.0        fce289e99eb9        15 months ago       1.84kB 
hello-world         latest              fce289e99eb9        15 months ago       1.84kB
fce289e99eb9
是您的哈希代码

要标记此图像,请运行:

docker tag fce289e99eb9 hello-world:SNAPSHOT-1.0
要列出存储库的所有标记,请使用:

docker image ls hello-world
你会得到这样的结果:

IMAGE               CREATED
fce289e99eb9        15 months ago 
REPOSITORY          TAG                 IMAGE ID            CREATED    SIZE 
hello-world         SNAPSHOT-1.0        fce289e99eb9        15 months ago       1.84kB 
hello-world         latest              fce289e99eb9        15 months ago       1.84kB

docker commit似乎没有做我希望它做的事情。我有一张wordpress的图片。当我添加一篇文章并进行docker提交,然后用我的新图像启动一个新容器时,新文章将丢失。我觉得docker对提交的想法与世界其他地方不同。你应该研究wordpress图像的docker文件,以发现它是否使用卷来存储post数据。另外,wordpress容器可能依赖第二个数据库容器来存储其数据,如果您是这样的话,那么您希望保存数据库容器,而不是wordpress容器。不,它是自包含的,所以我不明白为什么数据不能持久存在。也许你可以共享WordPress Docker文件,或者你可以备份该卷,拍摄mysql数据库的快照。纯代码的答案被认为是低质量的:确保提供一个解释,说明你的代码做了什么以及它是如何解决问题的。如果你能在你的文章中添加更多的信息,这将有助于询问者和未来的读者。另请参见解释完全基于代码的答案: