离线环境下运行 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
相关推荐
Java陈序员6 小时前
免费开源!一款操作 MySQL 和 MariaDB 的 Web 界面工具!
mysql·docker·php·mariadb
梁正雄6 小时前
9、dockerfile
docker·dockerfile·dockerfile基础用法
panplan.top6 小时前
Tornado + Motor 微服务架构(Docker + 测试 + Kubernetes)
linux·python·docker·微服务·k8s·tornado
-指短琴长-7 小时前
Docker基础【Ubuntu安装/Windows安装】
windows·ubuntu·docker
Z_Xshan7 小时前
docker 容器web站点 中文文件名访问404问题
linux·开发语言·docker
回忆是昨天里的海8 小时前
k8s集群-节点间通信之安装kube-flannel插件
java·docker·kubernetes
ZHE|张恒9 小时前
Docker 安装 MinIO(20250422)
运维·docker·容器
LCG元11 小时前
Docker容器化实战:将你的SpringBoot应用一键打包部署(二)-设置CI/CD流水线实现自动化部署
后端·docker
victory043111 小时前
krea 智能体自动部署k8s 情况 和k8s入门路径 minikube
云原生·容器·kubernetes