简介
Docker 彻底改变了软件部署方式,对于开发者和系统管理员而言,了解已停止容器的文件传输方法至关重要。本教程将全面深入地介绍在主机系统与非活动 Docker 容器之间传输文件的方法,提供实用技巧,以便在不同容器状态下有效地管理数据。
Docker 彻底改变了软件部署方式,对于开发者和系统管理员而言,了解已停止容器的文件传输方法至关重要。本教程将全面深入地介绍在主机系统与非活动 Docker 容器之间传输文件的方法,提供实用技巧,以便在不同容器状态下有效地管理数据。
Docker 容器是一个轻量级的、独立的、可执行的软件包,它包含运行应用程序所需的一切:代码、运行时环境、系统工具、系统库和设置。与虚拟机不同,容器虚拟化的是操作系统而非硬件,这使得它们更高效且便于移植。
Docker 容器具有特定的生命周期,包含几个关键状态:
| 状态 | 描述 |
|---|---|
| 创建(Created) | 容器已初始化但尚未启动 |
| 运行(Running) | 容器正在积极执行 |
| 停止(Stopped) | 容器已停止运行,但仍然存在 |
| 暂停(Paused) | 容器的进程被暂时挂起 |
| 删除(Removed) | 容器已被删除 |
docker create --name mycontainer ubuntu:22.04
docker start mycontainer
docker stop mycontainer
学习 Docker 时,实践至关重要。LabEx 提供了实践环境,用于试验容器管理和文件传输技术。
Docker 提供了多种将文件传输到已停止容器的方法,每种方法都有其独特的优势和适用场景。
| 方法 | 对已停止容器的支持 | 性能 | 复杂度 |
|---|---|---|---|
| docker cp | 是 | 高 | 低 |
| 卷挂载(Volume Mounting) | 是 | 中等 | 中等 |
| Dockerfile COPY | 否 | 低 | 低 |
## 将文件复制到已停止的容器
docker cp /local/path/file.txt stopped_container:/container/path/
## 复制整个目录
docker cp /local/directory stopped_container:/container/path/
## 创建命名卷
docker volume create myvolume
## 将卷挂载到已停止的容器
docker run -v myvolume:/container/path image_name
## 创建临时容器
docker create --name temp_container image_name
## 复制文件
docker cp /local/file temp_container:/container/path
## 提交更改
docker commit temp_container new_image
LabEx 环境提供了安全、隔离的空间,让你可以练习这些文件传输技术,而不会对生产系统造成风险。
## 创建一个已停止的容器
docker create --name config_container ubuntu:22.04
## 传输配置文件
docker cp /etc/myapp/config.yml config_container:/app/config/
## 为持久数据创建卷
docker volume create app_data
## 将数据复制到卷
docker run --rm -v app_data:/data -v /local/backup:/backup ubuntu:22.04 \
cp /backup/data.sql /data/
| 问题 | 解决方案 |
|---|---|
| 权限被拒绝 | 使用 --user 标志 |
| 大文件传输 | 使用 tar 压缩 |
| 所有权冲突 | 修改文件权限 |
#!/bin/bash
## 文件传输实用工具
## 验证容器是否存在
## 安全地传输文件
docker cp在 LabEx 可控的 Docker 环境中练习这些技术,以培养实际技能,同时不会对生产系统造成风险。
掌握 Docker 容器中的文件传输技术,能使开发者有效地管理数据,并简化他们的容器化工作流程。通过了解诸如 docker cp、卷挂载和中间容器策略等各种方法,专业人员无论容器处于何种状态,都能确保实现无缝的文件管理,从而提高容器的整体灵活性和运营效率。