我知道我们可以像这样将文件夹挂载到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 中),您将卷保存到目录中。然后入口点运行加载以将文件还原到卷目录中。