离线环境下运行 Docker 容器编排指南

在生产环境或内网部署场景中,常常面临无法联网的限制。在没有网络连接的环境中,我们依然可以使用 Docker Compose 来启动多个容器服务。本文将手把手教你如何准备镜像、导入资源,并成功运行容器编排。


🧰 一、准备工作:联网环境中完成资源采集

1. 拉取所需镜像

在有网络的电脑上,进入你的项目目录,执行:

bash 复制代码
docker compose pull

这一步会下载 docker-compose.yml 中定义的所有镜像。


2. 导出镜像文件

使用 docker save 命令将镜像保存为 .tar 文件:

bash 复制代码
docker save 镜像名:标签 -o 镜像名.tar
# 示例:
docker save nginx:1.25 -o nginx.tar
docker save redis:7.2 -o redis.tar

你可以将多个镜像打包一起传输,也可以分别保存。


3. 打包项目文件

确保以下文件一并打包带到离线环境:

  • docker-compose.yml
  • .env(如果有)
  • 所需配置文件、静态资源、初始化脚本等

📦 二、离线环境中导入与部署

1. 安装 Docker 和 Docker Compose

确保离线环境已安装:

  • Docker 引擎
  • Docker Compose 插件(推荐使用新版 CLI 插件)

你可以在联网环境下载 .deb.rpm 安装包,拷贝到离线机器安装。


2. 导入镜像

.tar 文件拷贝到离线机器,执行:

bash 复制代码
docker load -i nginx.tar
docker load -i redis.tar

验证镜像是否导入成功:

bash 复制代码
docker images

3. 创建必要的网络与卷(如有)

如果 Compose 文件中引用了自定义网络或命名卷,需提前创建:

bash 复制代码
docker network create my_network
docker volume create my_volume

🚀 三、启动容器编排

进入项目目录,执行:

bash 复制代码
docker compose up -d

这将以后台模式启动所有服务。查看运行状态:

bash 复制代码
docker compose ps

🧪 四、常见问题与解决方案

错误提示 原因 解决方法
pull access denied 镜像未导入 使用 docker load 导入 .tar 文件
unknown flag: -d Compose 版本不兼容 使用新版 Docker Compose 插件
network not found 引用了未创建的网络 手动创建网络:docker network create
service exited with code 1 容器启动失败 查看日志:docker logs 容器名

📌 附加建议

  • ✅ 使用固定版本号的镜像,避免未来变动。
  • ✅ 在 Compose 文件中使用本地镜像名,确保一致性。
  • ✅ 使用 docker compose config 检查配置是否展开正确。
  • ✅ 可将镜像集中打包为一个压缩文件,便于传输。

📁 示例项目结构

复制代码
my-project/
├── docker-compose.yml
├── .env
├── nginx/
│   └── default.conf
├── redis/
│   └── redis.conf
└── 镜像文件/
    ├── nginx.tar
    └── redis.tar
相关推荐
SCBAiotAigc20 小时前
2026.5.1:`DockerDesktop must be owned by an elevated account`错误的解决办法
人工智能·docker·具身智能
AI木马人20 小时前
9.人工智能实战:GPU 服务如何上 Kubernetes?从单机部署到 K8s + NVIDIA Device Plugin + HPA 的生产级改造
人工智能·容器·kubernetes
身如柳絮随风扬1 天前
使用 Docker 部署禅道并实现自动化部署——从项目搭建到运维自动化的完整指南
运维·docker·自动化
eRTE XFUN1 天前
docker下搭建redis集群
redis·docker·容器
一只小bit1 天前
Docker 存储卷:本地文件与容器内部文件建立绑定关系
运维·docker·容器
都在酒里1 天前
在公共服务器上构建 RK3588 SDK 的纯净 Docker 方案
运维·服务器·docker
jeCA EURG1 天前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构
身如柳絮随风扬1 天前
使用 Docker 部署 Jenkins 并实现自动化部署 —— 从零到一的 CI/CD 实践指南
docker·自动化·jenkins
就叫飞六吧1 天前
docker快速启动sqlserver实例并自动测试shell脚本
docker·容器·sqlserver
皮皮冰燃2 天前
docker-18-WSL中安装docker并部署flask服务
docker·容器·flask