最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
容器管理如何将宿主机的文件复制到容器内部
时间:2026-08-18 07:53:49 编辑:袖梨 来源:一聚教程网
最常用、最直接的方式是用 docker cp 命令,适用于运行中或已停止的容器,无需重建镜像或修改配置;支持单文件及递归目录复制,路径为绝对路径,上级目录需预先存在,权限默认继承宿主机。
最常用、最直接的方式是用docker cp命令,适用于已存在(运行中或已停止)的容器,无需重建镜像或改配置。
用 docker cp 复制文件或目录
这是临时复制的首选方法,操作快、不依赖容器状态。
- 复制单个文件:
docker cp /宿主机/路径/文件名 容器名或ID:/容器内/路径/ - 复制整个目录(递归):
docker cp /宿主机/路径/目录名 容器名或ID:/容器内/目标路径/ - 目标路径若不存在,Docker 会自动创建该目录(注意:不是自动创建父级多层目录,建议确保上级路径已存在)
- 容器可以是运行中,也可以是已停止状态
- 复制后,文件权限通常继承宿主机设置,进容器后可能需手动调整,例如:
docker exec -it 容器名 chmod 644 /路径/文件
想让文件随容器一起启动?用 Dockerfile 构建镜像
适合配置文件、静态资源、源码等需要长期固化在镜像里的场景。
- 在 Dockerfile 中添加:
COPY ./config.yaml /app/config.yaml - 构建并运行:
docker build -t myapp . && docker run -d --name app1 myapp - 注意:
COPY只支持本地上下文路径,不能写../或绝对路径;ADD虽能解压和拉 URL,但一般推荐用COPY更清晰安全
需要实时同步或开发调试?挂载宿主机目录(Bind Mount)
适合日志查看、代码热更新、配置动态修改等持续交互场景。
- 启动时挂载:
docker run -v /宿主机/路径:/容器内/路径 镜像名 - 例如:
docker run -v $(pwd)/conf:/etc/myapp nginx,宿主机当前目录下的 conf 文件夹就实时映射进容器 - 文件修改立即双向生效,删除容器也不影响宿主机数据
- 注意:路径必须用绝对路径;Windows/macOS 用户需确认该路径已在 Docker Desktop 的文件共享设置中启用
复杂多服务项目?用 docker-compose.yml 管理卷
适合微服务、前后端分离等需统一编排的场景。
- 在
docker-compose.yml中定义:volumes:
- ./data:/app/data
- 执行
docker-compose up -d启动后,宿主机./data就自动挂载到各服务容器的/app/data - 比手动写
docker run -v更易维护、可复用