如何将卷添加到现有 Docker 容器?

新手上路,请多包涵

我有一个 Docker 容器,我只需在 Ubuntu 上安装 Docker 并执行以下操作即可创建:

 sudo docker run -i -t ubuntu /bin/bash

我立即开始安装 Java 和其他一些工具,花了一些时间,并通过以下方式停止容器

exit

然后我想添加一个卷,并意识到这并不像我想象的那么简单。如果我使用 sudo docker -v /somedir run ... 那么我最终会得到一个全新的容器,所以我必须安装 Java 并执行我之前已经完成的操作才能到达一个已安装卷的容器。

所有关于从主机挂载文件夹的文档似乎都暗示挂载卷是在创建容器时可以完成的事情。因此,我必须避免从头开始重新配置新容器的唯一选择是将现有容器提交到存储库,并在安装卷时将其用作新容器的基础。

这确实是向现有容器添加卷的唯一方法吗?

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

阅读 456
2 个回答

您可以提交现有容器(即根据容器的更改创建新映像),然后使用新挂载运行它。

例子:

 $ docker ps  -a

CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                          PORTS               NAMES
5a8f89adeead        ubuntu:14.04          "/bin/bash"              About a minute ago   Exited (0) About a minute ago                       agitated_newton

$ docker commit 5a8f89adeead newimagename
$ docker run -ti -v "$PWD/somedir":/somedir newimagename /bin/bash

如果一切正常,请停止旧容器,并使用这个新容器。

您还可以使用容器名称提交容器,例如:

 docker commit agitated_newton newimagename

而已 :)

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

我们没有任何方法可以在运行的容器中添加卷,但要实现此目标,您可以使用以下命令:

在容器和本地文件系统之间复制文件/文件夹:

 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

参考见:

https://docs.docker.com/engine/reference/commandline/cp/

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

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