添加到主机的挂载点不会显示在 运行 docker 容器中
mount points added to the host don't show up in a running docker container
如果我用
启动一个 docker 容器
docker run -v /foo:/foo ...
我可以从容器中看到主机上 /foo 的内容。
虽然 docker 容器是 运行ning,如果我 运行
mount -t ext4 /dev/... /foo/something
我不会在容器内的 /foo 中看到新的挂载点 - 有什么办法让它显示出来吗? (如果我在主机上建立挂载点后启动 docker 容器,就可以了)。
Docker 容器 运行 在私有挂载命名空间中,这意味着容器启动后在主机上进行的挂载不会传播到容器中。 kernel documentation on shared subtrees 详细介绍了挂载传播以及私有挂载、共享挂载和从属挂载。
对您的问题的简短回答是,没有一种简单的方法可以将这样的新安装暴露到容器中。它是 可能 ,可能涉及在容器名称空间内使用 nsenter
到 运行 命令来更改挂载上的标志,但我不会去那里。
一般情况下,如果您需要更改容器的存储配置,您需要重新部署容器。
如果我用
启动一个 docker 容器docker run -v /foo:/foo ...
我可以从容器中看到主机上 /foo 的内容。
虽然 docker 容器是 运行ning,如果我 运行
mount -t ext4 /dev/... /foo/something
我不会在容器内的 /foo 中看到新的挂载点 - 有什么办法让它显示出来吗? (如果我在主机上建立挂载点后启动 docker 容器,就可以了)。
Docker 容器 运行 在私有挂载命名空间中,这意味着容器启动后在主机上进行的挂载不会传播到容器中。 kernel documentation on shared subtrees 详细介绍了挂载传播以及私有挂载、共享挂载和从属挂载。
对您的问题的简短回答是,没有一种简单的方法可以将这样的新安装暴露到容器中。它是 可能 ,可能涉及在容器名称空间内使用 nsenter
到 运行 命令来更改挂载上的标志,但我不会去那里。
一般情况下,如果您需要更改容器的存储配置,您需要重新部署容器。