如何将主机目录挂载到正在运行的 docker 容器中

kug*_*uga 7 linux mount docker

我想将我的 USB 驱动器安装到正在运行的 docker 实例中以手动备份一些文件。

我知道 的-v功能docker run,但这会创建一个新容器。注意:它是一个 nextcloudpi 容器。

Dav*_*aze 7

容器启动后,您只能更改一组非常有限的容器选项。环境变量和容器安装等选项只能在初始docker rundocker create. 如果您想更改这些,您需要停止并删除现有容器,然后使用新的挂载选项创建一个新容器。

如果您认为需要保留或备份某些数据,那么它无论如何都应该存在于某种卷安装中。删除并重新启动容器,然后使用-v选项在保存数据的位置安装卷。Docker 文档有一个使用命名卷以及单独的备份和恢复容器的示例;或者您可以直接使用主机目录和那里的常规备份解决方案。(按照我在第一段中建议的那样删除和重新创建容器是非常常规的,这不应该涉及明确的“备份”和“恢复”步骤。)

如果您现在拥有无法承受丢失的数据,则可以docker cp在设置更强大的存储方案之前将其从容器中取出。


Bra*_*rad 6

正如David Maze提到的,使用普通的 docker 命令几乎不可能更改现有容器的卷位置。

我找到了一种适合我的替代方法。主要思想是将现有容器转换为新的 docker 镜像,并在其之上初始化一个新的 docker 容器。希望对你也有用。

# Create a new image from the container
docker commit CONTAINERID NEWIMAGENAME

# Create a new container on the top of the new image
docker run -v HOSTLOCATION:CONTAINERLOCATION NEWIMAGENAME
Run Code Online (Sandbox Code Playgroud)