容器管理如何将宿主机的文件复制到容器内部

作者:袖梨 2026-08-18

最常用、最直接的方式是用 docker cp 命令,适用于运行中或已停止的容器,无需重建镜像或修改配置;支持单文件及递归目录复制,路径为绝对路径,上级目录需预先存在,权限默认继承宿主机。

最常用、最直接的方式是用docker cp命令,适用于已存在(运行中或已停止)的容器,无需重建镜像或改配置。

用 docker cp 复制文件或目录

这是临时复制的首选方法,操作快、不依赖容器状态。

  1. 复制单个文件:docker cp /宿主机/路径/文件名 容器名或ID:/容器内/路径/
  2. 复制整个目录(递归):docker cp /宿主机/路径/目录名 容器名或ID:/容器内/目标路径/
  3. 目标路径若不存在,Docker 会自动创建该目录(注意:不是自动创建父级多层目录,建议确保上级路径已存在)
  4. 容器可以是运行中,也可以是已停止状态
  5. 复制后,文件权限通常继承宿主机设置,进容器后可能需手动调整,例如:docker exec -it 容器名 chmod 644 /路径/文件

想让文件随容器一起启动?用 Dockerfile 构建镜像

适合配置文件、静态资源、源码等需要长期固化在镜像里的场景。

  1. 在 Dockerfile 中添加:COPY ./config.yaml /app/config.yaml
  2. 构建并运行:docker build -t myapp . && docker run -d --name app1 myapp
  3. 注意:COPY 只支持本地上下文路径,不能写 ../ 或绝对路径;ADD 虽能解压和拉 URL,但一般推荐用 COPY 更清晰安全

需要实时同步或开发调试?挂载宿主机目录(Bind Mount)

适合日志查看、代码热更新、配置动态修改等持续交互场景。

  1. 启动时挂载:docker run -v /宿主机/路径:/容器内/路径 镜像名
  2. 例如:docker run -v $(pwd)/conf:/etc/myapp nginx,宿主机当前目录下的 conf 文件夹就实时映射进容器
  3. 文件修改立即双向生效,删除容器也不影响宿主机数据
  4. 注意:路径必须用绝对路径;Windows/macOS 用户需确认该路径已在 Docker Desktop 的文件共享设置中启用

复杂多服务项目?用 docker-compose.yml 管理卷

适合微服务、前后端分离等需统一编排的场景。

  1. docker-compose.yml 中定义:
    volumes:

    - ./data:/app/data

  2. 执行 docker-compose up -d 启动后,宿主机 ./data 就自动挂载到各服务容器的 /app/data
  3. 比手动写 docker run -v 更易维护、可复用

相关文章

精彩推荐