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

如何将Docker容器内文件同步到宿主机,避免清理后数据丢失?

解决Docker容器内文件无法同步回宿主机及清理后文件丢失问题

问题

作为Docker新手,我创建了Ubuntu容器并通过COPY指令将宿主机文件复制到容器中,但容器工作目录下新建的文件/目录无法同步回宿主机原文件夹。由于测试时频繁执行docker system prune或docker rmi -f image_name清理容器和镜像,这些文件会随之丢失,需要实现容器到宿主机的文件同步方法。

当前配置

docker-compose.yml

version: '3'
services:
    ubuntu:
        build:
            context: .
            dockerfile: Dockerfile
        image: ubuntu
        ports:
            - 8091
        volumes:
            - ./dir:/dir
volumes:
    dir:
        external: false

Dockerfile

FROM ubuntu:latest
WORKDIR /dir
VOLUME /dir

RUN apt-get update
RUN apt-get install -y

EXPOSE 8000
COPY . .
CMD ["/bin/bash"]

解决方案

1. 绑定挂载实现双向实时同步

你当前的docker-compose.yml已经配置了绑定挂载- ./dir:/dir,但存在逻辑问题:容器启动时,宿主机的./dir会直接覆盖容器内的/dir目录,导致COPY . .复制的文件被清空(如果宿主机./dir为空的话)。

调整方式:

  • 先在宿主机创建./dir目录,将需要同步的文件放入其中,再启动容器;
  • 或者修改Dockerfile,将初始化文件复制到非挂载目录,再在容器启动时复制到/dir(比如在CMD中添加cp -r /init_dir/* /dir/)。

配置正确的绑定挂载后,容器内/dir的任何修改都会实时同步到宿主机./dir,清理容器/镜像后,宿主机的文件不会丢失。

2. 手动复制容器文件到宿主机

如果需要临时导出容器内的文件,可使用docker cp命令:

docker cp <containerId>:/file/path/within/container /host/path/target
  • 执行docker ps获取目标容器的<containerId>;
  • 替换/file/path/within/container为容器内要导出的文件/目录路径;
  • /host/path/target是宿主机接收文件的目标路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:45:33