我正在运行一个docker实例,我想 - 文档并不是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;
?
答案 0 :(得分:1)
正如docs提到的那样:
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
您将看到您的更改将保留在该容器中。
您还可以将容器提交为图像,可以将其推送到注册表或导出到文件。