一套脚本搞定 Docker 安装、版本管理、镜像加速、服务自启、安装验证。
适合:开发机初始化、服务器批量部署、团队统一环境。
在 Linux 上装 Docker,看起来就是几条命令,但真实场景里常常会遇到:
- 系统版本不一致(Ubuntu / Debian / CentOS / Fedora)
- 安装后拉镜像慢到怀疑人生
- 服务起不来,日志又难排查
- 多台机器重复操作,容易漏配置
- 已有 Docker 不知道该升级还是重装
所以我把这套流程做成了一个可交互的安装脚本:install-docker-linux.sh。这篇文章分享脚本能力、安装流程和踩坑排查,拿来就能用。
先看实际运行效果
一、脚本解决了哪些问题?
这个脚本不是“只会安装”,而是把“可用、可维护、可排错”都考虑进去了:
1)安装前自动体检
- 检查 root 权限
- 检查网络连通性(国内/国际目标)
- 检查磁盘空间(至少 5GB)
- 自动识别 Linux 发行版 + 版本 + CPU 架构
如果前置条件不满足,脚本会直接退出并给出修复建议,避免装一半失败。
2)支持多发行版 + 多架构
支持:
- Ubuntu 20.04 / 22.04 / 24.04
- Debian 11 / 12
- CentOS 7 / 8 / 9
- RHEL 8 / 9
- Rocky Linux / AlmaLinux 8 / 9
- Fedora 38 / 39
架构支持:
- x86_64 (AMD64)
- ARM64 (aarch64)
- ARMv7
3)已安装 Docker 也能优雅处理
脚本检测到已有 Docker 时会提供 4 个选项:
- 卸载并重装(推荐)
- 保持现状,跳过安装
- 仅升级到目标版本
- 退出脚本
并且在卸载时会询问是否保留 /var/lib/docker 数据。
4)版本可控
- 默认版本:
27.5.0 - 支持
--version x.y.z指定版本 - 找不到指定版本时自动回退安装最新可用版本(并给出提示)
5)自动优化 daemon.json
脚本会自动生成 /etc/docker/daemon.json,包含:
- 多个国内镜像加速源
- 日志轮转限制(防止日志无限膨胀)
- overlay2 存储驱动
- live-restore
- 并发下载优化等
6)安装后自动验证
会执行一整套验证流程:
docker命令可用性- 版本检查
- 服务状态检查
docker info可用性hello-world容器运行测试- Compose 插件可用性(如已安装)
二、如何使用?
公众号:IT安装手册,回复:docker脚本
1)默认安装(推荐)
chmod +x install-docker-linux.sh
sudo install-docker-linux.sh
2)安装指定版本
chmod +x install-docker-linux.sh
sudo install-docker-linux.sh --version 24.0.7
3)常用参数
--no-compose # 不安装 Docker Compose
--no-mirror # 不使用国内镜像源
--no-autostart # 不设置开机自启
--help # 查看帮助
示例:
sudo bash install-docker-linux.sh --version 26.1.0 --no-autostart
三、脚本完整安装流程(16 步)
- 检查 root 权限
- 检查网络
- 检查磁盘空间
- 检测系统信息
- 检查现有 Docker
- 选择 Docker 版本
- 更新包索引
- 安装依赖
- 添加 GPG 密钥
- 添加 Docker 仓库
- 安装 Docker Engine
- 写入 daemon 配置
- 配置用户权限(加入 docker 组)
- 启动服务并设自启
- 执行安装验证
- 输出安装总结和后续建议
这套流程最大价值是:可重复、可观测、可回溯。
四、默认配置为什么实用?
脚本写入的 daemon.json 重点做了这几件事:
- 配置多镜像加速,提升国内拉取速度和可用性
- 日志限制为
100m * 3,防止日志吃满磁盘 - 开启
live-restore,Docker 重启时尽量不影响容器 - 调整并发下载和 ulimit,提升大镜像拉取与高并发稳定性
你可以通过下面命令验证镜像加速是否生效:
docker info | grep -A 10 "Registry Mirrors"
五、常见问题(FAQ)
Q1:为什么必须用 sudo/root?
安装过程涉及系统仓库、服务管理、配置文件写入,不用 root 无法完成。
Q2:安装后还要 sudo docker,怎么办?
执行一次:
newgrp docker
或者重新登录终端会话,让用户组变更生效。
Q3:内网机器怎么安装?
先设置代理再执行脚本:
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
sudo -E bash install-docker-linux.sh
Q4:安装失败从哪看日志?
脚本日志目录:
/var/log/docker-install/
Docker 服务日志:
journalctl -xeu docker.service
六、我最推荐的使用方式
如果你是个人开发者:
- 直接默认安装 + 保留镜像加速配置
如果你是团队/运维:
- 固定
--version - 固定参数模板(例如是否自启、是否 compose)
- 把脚本纳入初始化流程(云主机首启、CI Runner 初始化、实验室机器批量部署)
一句话:
把“人工安装经验”沉淀成“可执行标准流程”。
七、结语
Docker 安装不难,难的是“稳定地在不同机器上快速装对”。
这套脚本的目标就是:一次写好,长期复用。
如果你也在维护多台 Linux 机器,建议把这类安装流程脚本化:
不仅省时间,更能降低环境差异带来的线上风险。
更多内容
- 个人博客:itinstall.dev
- 公众号:IT安装手册