离线环境下运行 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
相关推荐
huaweichenai1 天前
docker部署kkFileView实现文件预览功能
运维·docker·容器
叫致寒吧1 天前
k8s部署
云原生·容器·kubernetes
叫致寒吧1 天前
k8s操作(三)
网络·容器·kubernetes
望舒同学1 天前
Docker上云踩坑实录
docker·全栈
Knight_AL1 天前
MinIO 入门实战:Docker 安装 + Spring Boot 文件上传(公有 / 私有)
spring boot·docker·容器
better_liang1 天前
每日Java面试场景题知识点之-Docker容器化部署
java·docker·微服务·devops·容器化·企业级开发
南山nash1 天前
Docker 网络详细讲解
运维·docker·容器
海鸥811 天前
K8S中使用 reloader 实现滚动升级
云原生·容器·kubernetes
白驹过隙不负青春1 天前
Docker-compose部署java服务及前端服务
java·运维·前端·docker·容器·centos
阿常呓语1 天前
深入理解 Kubernetes 中的探针
云原生·容器·kubernetes