如何保存 Docker 容器状态

新手上路,请多包涵

我正在尝试了解 Docker 的来龙去脉,但我对保存图像的前景感到困惑。

我运行了基本的 Ubuntu 映像,安装了 Anaconda Python 和其他一些东西……那么现在保存进度的最佳方法是什么?保存、提交、导出?

这些似乎都不像 VirtualBox 那样工作,它为您的虚拟机提供了一个明显的保存状态文件。

原文由 hobscrk777 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

通常的方法是至少通过 docker commit :这会将容器的状态冻结为新图像。

注意:正如 anchovylegend评论 的,这不是最佳实践,使用 Dockerfile 可以让您对图像内容进行正式建模,并确保您可以重建/重现其初始状态。

然后,您可以使用 docker images 在本地列出该图像,然后再次运行它。

例子:

 $ 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


之后, 如果您已经部署了一个注册服务器,您可以将您的图像推送到该服务器。

原文由 VonC 发布,翻译遵循 CC BY-SA 3.0 许可协议

通常的方法是至少通过 docker commit:这会将容器的状态冻结到一个新的图像中。

但是要知道,与 Hyper-V 或 VMware 中的虚拟机保存状态不同,容器的“保存状态”没有可靠的方法。这也是 docker 的一个缺点。

它似乎只保存对持久文件更改所做的更改。因此,当您从新图像再次启动容器时,依赖项和执行的所有运行命令将不会产生相同的效果。

这就是为什么必须更改 docker 文件的理想选择,简而言之,docker 系统中没有像我们在虚拟机中那样的保存状态功能。内存内容总是丢失。

原文由 Shahid Roofi Khan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏