之前有人问我Docker容器启动之后还能否再挂载卷,考虑mnt命名空间的工作原理,我一开始认为这很难实现。不过现在我认为是它实现的。
- 简单来说,要想将磁盘卷挂载到正在运行的容器上,我们需要:
- 使用nsenter将包含这个磁盘卷的整个文件系统mount到临时挂载点上;
- 从我们想当作磁盘卷使用的特定文件夹中创建绑定挂载(bind mount)到这个磁盘卷的位置;
umount第一步创建的临时挂载点。
注意事项
在下面的示例中,我故意包含了$符号来表示这是Shell命令行提示符,以帮助大家区分哪些是你需要输入的,哪些是机器回复的。有一些多行命令,我也继续用>。我知道这样使得例子里的命令无法轻易得被拷贝粘贴。如果你想要拷贝粘贴代码,请查看文章最后的示例脚本。
详细步骤
下面示例的前提是你已经使用如下命令启动了一个简单的名为charlie的容器:
$ docker run --name charlie -ti ubuntu bash
评论列表()