在实际开发或部署过程中,我们常常需要将本地构建好的 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

属性在配置文件里,在名字的下一级就行)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐