You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker commit推送的镜像拉取后无存储文件,如何保留提交的文件?

错误原因

Docker commit 命令只会保存容器自身联合文件系统中产生的变更,你在docker-compose中配置的/01_VOL1:/srv属于宿主机绑定挂载卷(Bind Mount),/srv目录的读写完全直接对接原服务器的/01_VOL1目录,不会写入容器的文件系统层,因此commit操作不会将上传的文件打包到镜像中,新服务器拉取的镜像自然不包含之前的上传内容。

解决方案

分为两种实现路径,按需选择:

路径1:将文件打包到镜像内同步分发(适合静态不常更新的文件)

  • 停止原运行中的filebrowser容器,将原服务器/01_VOL1目录下的所有文件复制到本地构建目录
  • 编写Dockerfile,示例如下:
# 基础镜像使用你原有的filebrowser镜像
FROM xxxxdocker/xxxrepo:browser_v1
# 将本地文件复制到镜像内的/srv目录
COPY ./本地文件路径 /srv
  • 执行docker build -t xxxxdocker/xxxrepo:browser_v2 .构建新镜像,打tag后推送到DockerHub,新服务器拉取该镜像启动即可看到内置的文件
  • 注意:该方式下后续在容器内新上传的文件依然不会自动同步到镜像,每次需要更新文件都要重新构建镜像

路径2:数据与镜像分离(生产环境推荐)

该方案无需修改镜像,符合容器化最佳实践:

  • 将原服务器/01_VOL1目录下的所有内容完整迁移到新服务器的/01_VOL1路径下
  • 直接使用你原有docker-compose配置在新服务器启动容器即可,所有上传文件都可以正常读取
  • 后续升级镜像、迁移环境都不会影响业务数据,维护成本更低
补充说明

不建议使用docker commit方式制作自定义镜像,commit生成的镜像无构建过程可追溯,存在冗余内容、安全性低等问题,所有自定义镜像都建议通过Dockerfile方式构建。

内容的提问来源于stack exchange,提问作者Umesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:07