本文记录从本地 WSL 2 环境导出 Docker 镜像并部署到阿里云 ECS 服务器的完整操作步骤。
1️⃣ 本地导出镜像
在 Win10/WSL 项目目录下执行:
docker compose build
docker save history-server:latest | gzip > history-server.tar.gz
ls -lh history-server.tar.gz
|
2️⃣ 上传镜像到服务器
scp history-server.tar.gz root@服务器IP:/usr/local/workspace/
ssh root@服务器IP "mkdir -p /usr/local/workspace/HistoryServerDocker"
|
上传项目配置文件
即使镜像已包含代码,服务器上仍然需要以下文件来启动容器:
compose.yaml(或 docker-compose.yml)
staticfiles/ 目录(静态文件)
- 其他配置文件(如
.env)
推荐方式:上传完整项目(排除本地虚拟环境和缓存)
scp -r ./HistoryServer/ root@服务器IP:/usr/local/workspace/HistoryServerDocker/
rsync -avz --exclude 'venv/' --exclude '__pycache__/' --exclude '.git/' \ ./HistoryServer/ root@服务器IP:/usr/local/workspace/HistoryServerDocker/
|
📌 如果项目已托管在 Git,也可直接在服务器上拉取:
ssh root@服务器IP "cd /usr/local/workspace/HistoryServerDocker && git clone <仓库地址> ."
|
3️⃣ 服务器加载镜像
登录服务器或在本地执行远程命令:
cd /usr/local/workspace
docker load -i history-server.tar.gz
pv history-server.tar.gz | gunzip | docker load
docker image ls history-server
|
加载成功后会看到类似输出:
REPOSITORY TAG IMAGE ID CREATED SIZE history-server latest abc123def456 2 hours ago 1.2GB
|
4️⃣ 清理临时文件
确认镜像存在后,删除压缩包释放磁盘空间:
rm -f /usr/local/workspace/history-server.tar.gz
rm -f history-server.tar.gz
|
5️⃣ 启动服务
cd /usr/local/workspace/HistoryServerDocker
docker compose up -d --no-build
|
📋 命令速查
| 步骤 |
命令 |
| 构建镜像 |
docker compose build |
| 导出压缩 |
docker save 镜像名 | gzip > 文件.tar.gz |
| 上传文件 |
scp 文件 root@IP:/路径/ |
| 加载镜像 |
gunzip -c 文件.tar.gz | docker load |
| 查看镜像 |
docker image ls 镜像名 |
| 启动容器 |
docker compose up -d |
⚠️ 注意事项
- 压缩包格式:
.tar.gz 可以直接管道给 docker load,无需手动解压。
- 项目配置文件:即使镜像已包含代码,
compose.yaml、静态文件等仍需要在服务器上存在。
- 端口放行:确保阿里云安全组已放行服务使用的端口(如 8080)。
- 交换空间:2核2G 服务器建议提前配置交换空间,防止内存不足导致构建或运行中断。