我们可以将一个文件夹挂载到docker中,以便它覆盖存在的子目录,同时保留主机中的其余部分吗?

我们可以将一个文件夹挂载到docker中,以便它覆盖存在的子目录,同时保留主机中的其余部分吗?

我知道我们可以像这样将文件夹挂载到docker容器中:

docker run -v /home/user:/home/user <image>

但它会掩盖容器中存在的所有内容/home/user

是否可以这样挂载:如果文件或文件夹存在于主机中/home/user/,它将被挂载;其他所有内容都将从容器中保留?

例如假设我的主机和容器中分别有以下内容:

主持人

/home/user/.ssh
/home/user/.config
/home/user/code-server  # v2

容器

/home/user/apps/web-server
/home/user/code-server  # v1

我希望在安装之后将它们合并:

/home/user/.ssh
/home/user/.config
/home/user/apps/web-server  # because the container has it.
/home/user/code-server  # because the host has it.

答案1

简短回答:不。您需要在容器外部创建一个覆盖文件系统以将其作为卷挂载(不使用容器文件夹),或者更可能希望将文件存储在容器内的其他位置并在容器启动时恢复它们。

save-volume我已经用和load-volume脚本完成了后者这个基础图像您可以用它来实现这一点。在构建过程中(在 Dockerfile 中),您将卷保存到目录中。然后入口点运行加载以将文件还原到卷目录中。

相关内容