docker moby 离线 安装
它是什么Moby 是 Docker 发起的开源容器组装框架,提供可拼装的工具组件。
Moby 是 Docker 发起的开源容器组装框架,提供可拼装的工具组件。本页说明在无外网环境下获取与部署容器引擎的路径:发行版软件包、静态二进制包、自行编译,以及镜像文件的离线带入方式,并列出与 Docker CE 的差异和常见问题。
详细介绍
简介
Moby 是 Docker 发起的开源项目,提供一套可按需拼装的容器工具组件,用于组装面向特定场景的容器系统,而不必从零造轮子。它要解决的问题是:在机房、内网等无法访问互联网的机器上,运维与开发人员仍然需要一套可用的容器运行能力,不能每次依赖在线仓库。适合需要离线部署容器引擎的运维人员、希望自主裁剪容器核心的开发者,以及希望统一镜像分发方式的团队。核心优势在于组件可自由组合、多个发行版已直接收录 moby 软件包、部署后对外暴露的命令与服务名仍是 docker 与 dockerd,与既有脚本和文档保持一致。
核心功能
- 提供一套“Lego 积木式”工具组件集合,可按需组合出专用容器系统,不必重复造轮子。
- github.com/moby/moby 的源码可编译出 dockerd 守护进程,github.com/docker/cli 可编译出 docker 命令行程序。
- 部分发行版以 moby 软件包形式提供容器引擎能力,使用后系统给出的命令与服务名仍为 docker、dockerd。
- Docker Hub 上的 moby 组织维护官方镜像,可在有网环境提前拉取并导出为文件带走。
- 支持静态二进制包部署:从 https://download.docker.com/linux/static/stable/ 下载压缩包,解压即可获得可执行文件。
- 提供组合容器化应用系统的框架,企业可据此快速打造专属的定制容器系统。
- 原 docker/docker 仓库已更名为 moby/moby,代码导入路径随之迁移,便于社区协作与长期维护。
使用场景
- 无法访问互联网的内网服务器或专有云节点,需要获得容器运行能力时的离线部署。
- openEuler 24.03 LTS SP3 等已收录 moby 的发行版,先用 dnf info moby 确认仓库提供后再从本地仓库获取。
- Alibaba Cloud Linux 4 系统默认通过 Moby 包提供容器引擎能力,适合直接沿用发行版自带方案。
- Fedora 默认仓库提供 moby-engine 包,适合不想额外添加第三方仓库的环境。
- 需要裁剪定制容器系统、只保留所需组件的企业场景,可基于组合框架自行组装。
- Halo 等应用的离线包部署:包内同时内置 Docker 程序与容器镜像文件,用于完全无外网的机器。
安装与获取步骤
- 判定环境:先确认目标机能否访问互联网与镜像仓库地址;不能访问的,准备离线包与镜像文件,能访问的可直接走仓库方式。
- 确认仓库是否提供:以提供 moby 软件包的 openEuler 24.03 LTS SP3 为例,执行 dnf info moby 查看仓库是否收录;其他版本同样先用该命令确认。
- 仓库已收录时,用发行版包管理器获取 moby 包并启动服务;Fedora 用户对应查找 moby-engine 包,Alibaba Cloud Linux 4 则默认由 Moby 包提供。
- 仓库未收录时改用静态二进制:从 https://download.docker.com/linux/static/stable/ 下载对应压缩包,执行 tar zxvf 解压,得到 docker 目录,再把其中的可执行文件放入系统命令搜索路径。
- 准备镜像文件:在有网机器上把所需镜像拉取下来,用 docker save 导出为文件,与程序文件一起拷贝到目标机,目标机上用 docker load 导入。
- 需要自行编译时,从 github.com/moby/moby 编译得到 dockerd,从 github.com/moby/cli 编译得到 docker 命令,两者齐备后容器环境才完整。
- 验证结果:启动 dockerd 服务,执行 docker 命令查看是否正常返回;再用 docker run 跑一个已导入的镜像,确认容器能启动。
与 Docker CE 的区别
- Moby 是可拼装的框架与组件集合,Docker CE 是已经打包好的成品软件包;两者关系类似 Electron 与 VSCode、Atom 的关系。
- 从源码角度看,moby/moby 产出 dockerd,docker/cli 产出 docker,二者合起来才构成可用的容器环境。
- 对使用者而言,多个发行版的 moby 包与 docker 包提供的是同一套能力,装完后命令、服务名保持 docker、dockerd,脚本无需改写。
- Moby 项目在拆分后保持独立性与健壮性,仍在 Docker 容器生态中扮演重要角色,选型时按发行版仓库实际提供的包名决定即可。
离线镜像与镜像文件准备
- 在可联网机器上把目标镜像全部拉取下来,用 docker save 导出为文件,随程序文件一同拷贝到目标机。
- 目标机上用 docker load 导入镜像文件,之后 docker run 才能正常启动容器,否则运行时会去仓库拉取而失败。
- 完全无外网的环境,基础镜像必须事先全部带入;Halo 的离线安装包即采用包内同时内置 Docker 程序与容器镜像文件的做法。
- 镜像与程序文件的版本需配套,具体可用组合以官方页面为准。
注意事项
- 不同发行版的包名并不统一:Fedora 默认仓库为 moby-engine,openEuler 等以 moby 提供,动手前先用 dnf info moby 核对当前仓库。
- 静态二进制包需与目标机的 CPU 架构和系统环境匹配,可用版本、文件校验值等以官方页面为准。
- 原 docker/docker 仓库已更名为 moby/moby,引用旧地址的脚本、文档或依赖需要同步改写。
- Moby 的定位是组装容器系统的框架,不等于面向最终用户的 Docker 产品,选型时不要只凭名字判断能力范围。
- 无外网环境下,容器镜像文件必须与程序文件一同带入,运行时再从仓库拉取会失败。
- 各发行版仓库收录的 moby 版本不同,是否提供该包以及提供到哪个版本,以官方页面为准。
更新记录
最近更新:2026-10-05
软件参数速览
下载
常见问题
执行 dnf info moby 提示找不到包怎么办?
说明当前系统仓库没有收录 moby。可改用发行版自带的 docker 相关包,Fedora 可查 moby-engine,或改走静态二进制路径,从 https://download.docker.com/linux/static/stable/ 下载压缩包解压后使用。
Fedora 上的 moby-engine 和 docker 包该选哪个?
两者都来自发行版默认仓库,提供的是同一套容器引擎能力,命令与服务名一致。选哪个取决于仓库实际收录情况与团队既有脚本依赖,具体可用版本以官方页面为准。
编译 github.com/moby/moby 得到的是什么?
得到 dockerd 守护进程;docker 命令行则要从 github.com/moby/cli(docker/cli)编译。只有两者齐备,容器环境才完整可用。
完全无外网的机器,镜像文件怎么带进去?
在有网机器上把镜像拉取下来,用 docker save 导出为文件,拷贝到目标机后用 docker load 导入。Halo 的离线包就是包内同时内置 Docker 程序与容器镜像文件的做法。
Alibaba Cloud Linux 4 上容器引擎叫什么名字?
系统默认通过 Moby 包提供容器引擎能力,使用后系统给出的命令与服务名仍是 docker、dockerd,既有脚本无需改写。
docker/docker 仓库还能按原地址引用吗?
该仓库已更名为 moby/moby,旧地址的引用需要同步改写,否则依赖拉取会失败。相关导入路径变化可参考 gist.github.com/26d0801bbea72a50a6f205ba0ef54d96。
Moby 和 Docker 到底是什么关系?
Moby 是 Docker 发起的开源框架,提供可拼装的工具组件,用于组装专用容器系统,关系类似 Electron 与 VSCode、Atom。它不等于面向最终用户的 Docker 产品本身。
openEuler 上怎么确认仓库提供 moby?
先执行 dnf info moby 查看仓库是否收录;以提供 moby 软件包的 openEuler 24.03 LTS SP3 为例可直接确认,其他版本同样用该命令核对,没有则改走二进制路径。