离线环境下运行 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
相关推荐
ljp11126 小时前
UNRaid安装chfs
docker·免费·文件共享
昵称为空C7 小时前
Spring Boot 项目docker分层镜像构建案例
spring boot·ci/cd·docker
kali-Myon7 小时前
快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题
运维·安全·docker·容器·gdb·pwn·tmux
管理大亨7 小时前
ELK + Redis Docker 企业级部署落地方案
大数据·运维·elk·elasticsearch·docker·jenkins
一周困⁸天.7 小时前
K8S-网络组件 Calico
网络·容器·kubernetes
pblh1238 小时前
基于Docker部署测试PySpark
运维·docker·容器
IT_mingY8 小时前
k8S网络概述——详细理论知识
网络·容器·kubernetes
yBmZlQzJ8 小时前
财运到内网穿透-群晖NAS安装(docker版本)
运维·经验分享·网络协议·docker·容器
白学还是没白学?9 小时前
exec db docker from A to B
数据库·docker·容器
WGS.9 小时前
docker run 报错:ImportError: PyCapsule_Import could not import module “datetime“
docker