一尘不染

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

docker

我有一个Docker容器,它是通过在Ubuntu上安装Docker并执行以下操作而创建的:

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

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

exit

然后,我想添加一个卷,并意识到这并不像我想象的那样简单。如果我使用了,sudo docker -v /somedir run ...那么我将得到一个全新的容器,因此我将安装Java并做我已经做过的事情,然后再到达一个具有已安装卷的容器。

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

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


阅读 640

收藏
2020-06-17

共1个答案

一尘不染

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

例:

$ 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/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash

如果一切正常,请停止旧容器,然后使用新容器。

而已 :)

2020-06-17