1. Docker:export vs save 与容器迁移
🔍 核心区别
| 命令 | 作用对象 | 内容 | 是否保留元数据(CMD/ENV) | 导入命令 |
|---|---|---|---|---|
docker export |
容器(Container) | 文件系统扁平快照 | ❌ 否 | docker import |
docker save |
镜像(Image) | 完整分层 + 元数据 | ✅ 是 | docker load |
💡 记住:
save= 保存"配方" → 可完美复现export= 导出"成品照片" → 丢失制作过程
🚀 如何迁移一个正在运行的容器到另一台服务器?
推荐流程(保留配置 + 文件系统):
bash
# 1. 源服务器:将容器提交为镜像
docker commit <container_name> my-app:latest
# 2. 保存镜像
docker save my-app:latest -o my-app.tar
# 3. 复制到目标服务器
scp my-app.tar user@target:/path/
# 4. 目标服务器:加载镜像
docker load -i my-app.tar
📂 docker cp 使用场景
- 用途 :在容器与主机之间拷贝单个文件或目录
- 不适用于:完整迁移容器或备份
bash
# 从容器拷贝文件到本地
docker cp container_name:/app/config.json ./config.json
# 从本地拷贝文件到容器
docker cp ./new_file.txt container_name:/app/
2. Git 常用命令速查
🔎 查询当前 commit ID
bash
git rev-parse HEAD # 完整 ID
git rev-parse --short HEAD # 短 ID(7位)
🔀 切换到指定 commit(只读状态)
bash
git checkout <commit_id>
# 返回分支:git switch main (或 git checkout main)
🗑 强制丢弃最新一次提交(本地 + 远程)
bash
# 1. 重置到上一个提交(保留工作区改动)
git reset --hard HEAD~1
# 2. 强制推送到远程(⚠️ 谨慎!会覆盖历史)
git push --force origin main
⚠️
--force会改写历史,团队协作中请确保无他人基于该提交开发。
3. rsync 常用用法
📥 参数含义(-avzP)
| 参数 | 说明 |
|---|---|
-a |
归档模式(保留权限、时间、符号链接等) |
-v |
详细输出(verbose) |
-z |
传输时压缩(节省带宽) |
-P |
等价于 --partial --progress(支持断点续传 + 显示进度) |
🌰 使用示例
远程同步(带进度)
bash
rsync -avzP /local/dir/ user@remote:/remote/dir/
本地复制(带进度)
bash
rsync -avP /source/dir/ /dest/dir/
# 注意:本地复制无需 -z(不压缩更快)
✅ 本地复制显示进度?用
-P即可!
4. screen 常用命令
screen 用于创建持久化终端会话,适合长时间任务(如训练、下载)。
🧰 基础操作
| 命令 | 说明 |
|---|---|
screen -S name |
创建名为 name 的会话 |
Ctrl+A, D |
脱离当前会话(detach) |
screen -r name |
恢复 名为 name 的会话 |
screen -ls |
列出所有会话 |
exit 或 Ctrl+D |
结束当前会话 |
💡 小技巧
- 会话名建议用项目名,如
screen -S training - 断网后重新登录,用
screen -r即可找回任务