文章目录
- Linux 服务器通过 tgz 离线部署 Docker
- 适用场景
- 一、环境检查
- 二、下载 Docker tgz 包
- 三、解压并安装二进制文件
- 四、创建 systemd 服务
- 五、配置 Docker 守护进程
- 六、启动 Docker 并设置开机自启
- 七、离线镜像导入
- 八、常见问题排查
- 部署要点小结
Linux 服务器通过 tgz 离线部署 Docker
适用场景
当服务器无法连接公网,或者需要统一分发 Docker 二进制包时,可以使用 Docker 官方静态二进制包离线部署。该方式不依赖 yum、apt 等包管理器,适合 CentOS、麒麟、UOS 等 Linux 系统。
一、环境检查
部署前先在目标服务器上确认系统架构和内核版本:
uname-muname-rcat/etc/os-releaseDocker 要求 Linux 内核版本不低于 3.10;麒麟 V10 等服务器系统通常默认满足要求。
如果服务器曾经安装过 Docker、Podman 或其他容器运行时,建议先清理旧版本,避免二进制冲突:
sudoyum remove-ydockerdocker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-enginepodman2>/dev/null||true二、下载 Docker tgz 包
在一台可以联网的机器上,从 Docker 官方静态二进制包地址下载对应版本和架构的安装包:
https://download.docker.com/linux/static/stable/常见目录包括:
| 架构 | 目录 | 适用环境 |
|---|---|---|
| x86_64 | x86_64/ | Intel / AMD 服务器 |
| aarch64 | aarch64/ | 鲲鹏、飞腾、ARM64 服务器 |
例如下载 x86_64 架构的某个版本:
wgethttps://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz下载完成后,将.tgz文件上传到目标服务器,例如放到/opt/docker-install/目录。
三、解压并安装二进制文件
进入安装包所在目录并解压:
cd/opt/docker-installtar-zxvfdocker-27.5.1.tgz解压后会生成一个docker/目录,里面包含:
docker/ ├── containerd ├── containerd-shim-runc-v2 ├── ctr ├── docker ├── dockerd ├── docker-init ├── docker-proxy └── runc将这些二进制文件复制到系统路径:
sudocpdocker/* /usr/bin/sudochmod+x /usr/bin/docker*sudochmod+x /usr/bin/containerd*sudochmod+x /usr/bin/runc注意不要只复制docker命令,dockerd、containerd、runc等组件也必须一起部署,否则 Docker 无法正常启动。
四、创建 systemd 服务
执行:
sudovim/etc/systemd/system/docker.service写入以下内容:
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target保存后执行:
sudochmod+x /etc/systemd/system/docker.servicesudosystemctl daemon-reload如果服务器运行在麒麟等启用 SELinux 的系统上,且容器启动异常,可临时在ExecStart中增加--selinux-enabled=false进行排查;生产环境更建议根据安全规范配置 SELinux 策略。
五、配置 Docker 守护进程
创建配置目录和配置文件:
sudomkdir-p/etc/dockersudovim/etc/docker/daemon.json示例配置:
{"exec-opts":["native.cgroupdriver=systemd"],"log-driver":"json-file","log-opts":{"max-size":"100m","max-file":"3"},"data-root":"/var/lib/docker"}如果有镜像加速需求,可以补充registry-mirrors;但离线环境中通常不需要配置公网镜像源。
配置完成后再次重载:
sudosystemctl daemon-reload六、启动 Docker 并设置开机自启
sudosystemctlenable--nowdockersudosystemctl statusdocker查看版本和运行信息:
dockerversiondockerinfo如果docker version能同时显示 Client 和 Server 信息,说明部署成功。
七、离线镜像导入
离线环境无法执行docker pull,镜像需要提前在有网机器上导出:
dockersave-ojava-8.tar library/java:8上传到目标服务器后导入:
dockerload-ijava-8.tar导入后可用以下命令确认:
dockerimages八、常见问题排查
| 问题 | 排查方法 |
|---|---|
| 启动失败 | 执行journalctl -u docker -f查看详细日志 |
| 架构不匹配 | 用uname -m确认,重新下载对应架构 tgz |
| 旧版本冲突 | 卸载旧 Docker/Podman,清理残留二进制文件 |
| SELinux 拦截 | 检查审计日志,必要时调整策略或临时关闭 |
| 磁盘空间不足 | 通过data-root将数据目录迁移到大盘分区 |
部署要点小结
tgz 部署的核心流程是:确认架构 → 下载静态包 → 解压到/usr/bin→ 配置 systemd → 配置daemon.json→ 启动并验证。
相比 rpm/deb 安装,这种方式更适合内网、信创和麒麟环境;缺点是升级时需要手动替换二进制文件,并重新执行systemctl daemon-reload和systemctl restart docker。