Docker:如何保存运行实例?

时间:2016-04-24 17:14:15

标签: docker

我正在运行一个docker实例,我想enter image description here - 文档并不是100%明确如何做到这一点,所以我在这里问。我使用:

打开了docker实例
docker ps

现在我想在本地保存我的所有工作,以便我可以回到它。我不特别想把它检查到dockerhub,除非这是可取的。

这就是我所做的。我打开了一个新的docker CLI选项卡,并在那里完成docker commit <docker-id> me/myinstance 以查找正在运行的docker实例的ID。然后在同一个标​​签中我尝试这样做:

docker run -it me/myinstance

这给了我一个提交哈希。

我现在可以安全地退出正在运行的docker实例吗?我将使用什么命令再次打开它 - 我是否需要存储提交哈希,或者我可以function ConvertFmxBitmapToVclBitmap(b:FMX.Graphics.TBitmap):Vcl.Graphics.TBitmap; var data:FMX.Graphics.TBitmapData; i,j:Integer; AlphaColor:TAlphaColor; begin Result:=VCL.Graphics.TBitmap.Create; Result.SetSize(b.Width,b.Height); if(b.Map(TMapAccess.Readwrite,data))then try for i := 0 to data.Height-1 do begin for j := 0 to data.Width-1 do begin AlphaColor:=data.GetPixel(i,j); Result.Canvas.Pixels[i,j]:= RGB( TAlphaColorRec(AlphaColor).R, TAlphaColorRec(AlphaColor).G, TAlphaColorRec(AlphaColor).B); end; end; finally b.Unmap(data); end; end;

2 个答案:

答案 0 :(得分:1)

正如docs提到的那样:

  • 从Docker hub提取图像
  • 使用docker run <image>
  • 在容器上运行该图像

当您对容器进行更改时,您不会更改基础映像,因此如果容器已停止,则不会保留这些更改。要保留您对容器所做的更改,请使用docker commit <container_id>

创建新图像

在Docker文档中的示例中:

# What containers are running on my system?
$ docker ps

ID                  IMAGE               COMMAND             CREATED
c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago
197387f1b436        ubuntu:12.04        /bin/bash           7 days ago

# Create a new image called svendowideit/testimage, tag it as "version3"
$ docker commit c3f279d17e0a  svendowideit/testimage:version3
f5283438590d

# What images do I have on my system?
$ docker images
REPOSITORY                        TAG                 ID
svendowideit/testimage            version3            f5283438590d

这样,您就可以在名为c3f279d17e0a的新图片上保留对容器svendowideit/testimage:version3的更改。

现在您有一个包含修改的图像,因此您可以根据需要在容器上多次运行它:

$ docker run svendowideit/testimage:version3

同样,容器是无状态的。当容器停止时,您在容器内所做的任何更改都将丢失。即使在容器存在之后保留数据的一种方法是using volumes。这样,您的容器就可以访问主机文件系统中的一个目录,您可以读取和写入该目录。

答案 1 :(得分:1)

当容器退出并且容器(容器应用程序)不是无状态时,容器内的更改丢失,除非您已将数据存储与应用程序专门分开(通过从主机文件系统挂载文件夹)或将数据发送到容器外的数据库)。

要查看容器中的更改,请启动旧容器(docker start ~),而不是创建新容器(docker run ~)。

如果您为容器命名,这样做会更容易。

即。

docker run -it --name containerName imageName

向你的容器做东西

docker kill containerName
docker start containerName

您将看到您的更改将保留在该容器中。

您还可以将容器提交为图像,可以将其推送到注册表或导出到文件。