Docker 镜像打包迁移实战:从导出到导入并使用 docker compose 启动服务
本文详细介绍了在离线环境下部署Docker镜像的全流程。首先通过docker save命令将镜像打包为.tar文件,然后传输到目标服务器;使用docker load导入镜像后,安装docker compose插件;最后通过docker-compose.yml文件快速启动服务。文章还提供了常见问题解决方案,包括命令缺失、端口冲突等,并汇总了核心操作命令。这套方法适用于内网部署、CI/CD中间产物传递
在实际开发或部署过程中,我们常常需要将本地构建好的 Docker 镜像迁移到没有网络的服务器上运行。本文将详细介绍如何将多个 Docker 镜像打包成 .tar 压缩包,传输到目标机器后加载镜像,并通过 docker compose 快速启动服务。
✅ 适用场景:离线部署、内网环境、CI/CD 中间产物传递等。
一、导出镜像为压缩包(源机器操作)
1. 查看当前已有镜像
首先查看当前系统中所有的 Docker 镜像,确认需要导出的镜像名称和标签:
docker images
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
redis alpine 345a2b1f... 2 weeks ago 35MB
2. 使用 docker save 打包镜像
将需要迁移的镜像分别保存为 .tar 文件:
docker save redis:alpine -o redis-alpine.tar
你也可以一次性打包多个镜像到一个文件中:
docker save -o all-services.tar redis:alpine rabbitmq:management emqx:latest mongo:latest
3. 将镜像文件拷贝到目标机器
使用 U盘、SCP、rsync 等方式将 .tar 文件复制到目标服务器:
scp *.tar user@target-server:/home/user/
二、导入镜像并启动服务(目标机器操作)
1. 加载镜像
在目标机器上使用 docker load 命令导入镜像:
docker load -i redis-alpine.tar
✅ 成功后会显示类似:
Loaded image: redis:alpine
Loaded image: rabbitmq:management
...
再次运行 docker images 可验证镜像是否已加载成功。
三、安装 docker compose 插件(如未安装)
⚠️ 注意:
docker-compose(V1) 和docker compose(V2) 是不同的工具。推荐使用新版docker compose(作为 Docker CLI 插件)。
如果执行 docker compose version 报错,说明未安装,则需手动安装:
方法:手动安装 docker compose 插件
# 创建插件目录
sudo mkdir -p /usr/lib/docker/cli-plugins
# 复制二进制文件(假设你已下载好 docker-compose-Linux-x86_64)
sudo cp /home/jumpin/桌面/imge/docker-compose /usr/lib/docker/cli-plugins/docker-compose
# 添加执行权限
sudo chmod +x /usr/lib/docker/cli-plugins/docker-compose
✅ 验证安装:
docker compose version
输出应类似:
Docker Compose version v2.23.0
💡 提示:官方下载地址:https://github.com/docker/compose/releases
四、使用 docker compose 启动服务
确保当前目录下存在 docker-compose.yml 文件,内容大致如下(示例):
# docker-compose.yml
version: '3.8'
services:
redis:
image: redis:alpine
ports:
- "6379:6379"
restart: unless-stopped
启动所有服务
docker compose up -d
✅ 输出成功后,可用以下命令检查状态:
docker ps # 查看运行中的容器
docker logs <container> # 查看日志
五、常见问题与注意事项
| 问题 | 解决方案 |
|---|---|
docker: command not found |
确保已安装 Docker 引擎 |
docker compose: command not found |
检查插件路径 /usr/lib/docker/cli-plugins/ 是否正确 |
| 镜像加载失败 | 检查 tar 包完整性,重新导出 |
| 端口冲突 | 修改 docker-compose.yml 中的端口映射 |
| 权限不足 | 使用 sudo 或将用户加入 docker 组 |
六、总结
本文完整演示了 Docker 镜像的 导出 → 传输 → 导入 → 启动服务 的全流程,核心命令如下:
| 步骤 | 命令 |
|---|---|
| 导出镜像 | docker save -o xxx.tar image:tag |
| 导入镜像 | docker load -i xxx.tar |
| 安装 compose | 放入 /usr/lib/docker/cli-plugins/ |
| 启动服务 | docker compose up -d |
该方法适用于绝大多数离线部署场景,简单高效,建议收藏备用!
(遗留问题,如果mq和emqx每次重启数据都消失了,需要配置
hostname: rabbitmq
属性在配置文件里,在名字的下一级就行)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)