如何永久保存 docker 容器内的数据和软件?

How can i save the data and softwares inside docker container permanently?

我正在使用 docker 来自 https://hub.docker.com/r/andrewssobral/bgslibrary_opencv3/ 的图像 opencv andrewssobral 作者。

首先,我通过输入命令初始化了图像的容器:

docker 运行 -it -p 5901:5901 andrewssobral/bgslibrary_opencv3 bash

我尝试通过命令行安装 vim:

apt-get install vim

但是当我使用 exit 命令退出容器并且我再次 运行 然后 vim 已卸载。

那么我如何在 docker 中永久安装 vim 或其他软件?

你有两个选择:或者你编辑作者提供的 Dockerfile 添加 vim 或者你创建一个新的 Dockerfile 来自 图片。

But when i exit docker above container and i run it again then vim was uninstalled.

这就是问题所在:docker run 创建了一个新容器。

当您使用 docker run ... 时,会根据您在命令中提供的图像创建并启动一个新容器。它也被分配了一个随机的 name(如果你没有指定)。如果此容器退出,您可以使用 docker start name 并再次启动它。这意味着如果您之前安装了 vim,它将在那里。

解决方案:创建一个包含您需要的新图像。

  1. @Sergiu建议使用Dockerfile

  2. 或另一种方法是将容器的当前状态保存到新图像中,以便以后可以使用它来创建包含更改的新容器。为此,您可以使用 docker commit

像这样:

docker commit your_modified_container_name [REPOSITORY[:TAG]]