如何向现有Docker镜像添加文件?Windows容器递归添加文件夹问题咨询
解决方案
以下是两种实现将宿主机多级目录递归添加到Windows Docker镜像的常用方案:
方法1:通过Dockerfile构建新镜像(最推荐,可复现性高)
- 首先将你需要上传的整个目录结构(包含folder、subfolder1、subfolder2及所有子文件)全部放到Docker构建上下文目录,也就是你执行
docker build命令的目录中 - Docker的
COPY指令默认支持递归复制目录结构,无需额外参数。如果你要将所有目录原封不动放到镜像的C:\myapp路径下,直接在Dockerfile中添加如下行即可:COPY ./ C:\myapp\ - 执行构建命令生成新镜像:
docker build -t 自定义新镜像名 .
方法2:给已运行的容器添加文件后提交为新镜像
如果你不想走完整的镜像构建流程,可以直接给运行中的容器传文件后提交生成新镜像:
- 首先用
docker cp命令递归传输宿主机目录到容器中,该命令默认递归复制所有子目录和文件,格式如下:
举个实际使用的例子:你的目录都放在宿主机docker cp 宿主机存放目标目录的路径\. 容器ID/容器名:容器内目标路径D:\temp\docker_files下,容器ID为win20h2-001,要放到容器的C:\myapp路径下,执行:docker cp D:\temp\docker_files\. win20h2-001:C:\myapp\ - 确认容器内目录结构和文件完整无误后,执行commit命令生成新镜像:
docker commit 容器ID/容器名 自定义新镜像名
注意事项
- 两种方法都会完整保留你给出的多级子目录结构,无需单独处理每个子文件夹
- Windows容器操作时注意路径格式使用Windows标准的反斜杠,避免和Linux路径格式混淆
- 用Dockerfile构建时建议添加
.dockerignore文件,过滤不需要传入镜像的缓存、临时文件,减小镜像体积
内容的提问来源于stack exchange,提问作者ZedZip
相关产品推荐
相关产品推荐

