5.3 KiB
5.3 KiB
一、这套脚本解决什么问题?
这份脚本不是只做“安装命令拼接”,而是覆盖完整链路:
- 环境检测:系统版本、架构、网络、磁盘空间
- 版本管理:默认稳定版本 + 支持手动指定版本
- 安装执行:自动配置官方源、安装 Engine / Containerd / Compose
- 配置优化:自动生成
daemon.json(镜像加速、日志轮转等) - 权限处理:自动把用户加入
docker组 - 结果验证:命令可用、服务状态、测试容器、Compose 检查
- 失败排障:安装日志和服务日志可追踪
一句话:
不只“装上 Docker”,而是“装好并可用”。
二、支持范围(脚本兼容性)
支持发行版
- Ubuntu 20.04 / 22.04 / 24.04
- Debian 11 / 12
- CentOS 7 / 8 / 9
- RHEL 8 / 9
- Rocky Linux 8 / 9
- AlmaLinux 8 / 9
- Fedora 38 / 39
支持架构
x86_64(主流云服务器)aarch64/ ARM64(ARM 服务器、部分开发板)- ARMv7(旧款 ARM 设备)
基础要求
- 需要 root 权限执行
- 需要网络可访问软件源
- 建议至少 5GB 可用磁盘(推荐 20GB+)
三、怎么使用(一键安装 + 参数控制)
1)标准用法(推荐)
# 下载脚本
wget https://gitee.com/haonuli/itinstall-script/raw/main/install-docker-linux.sh
# 赋予执行权限
chmod +x install-docker-linux.sh
# 运行(交互式)
sudo bash install-docker-linux.sh
2)常用参数
sudo bash install-docker-linux.sh [选项]
--version <版本号>:安装指定 Docker 版本--no-compose:不安装 Docker Compose--no-mirror:不配置镜像加速(海外网络可用)--no-autostart:不设置 Docker 开机自启--help:查看帮助
示例
# 默认安装(交互式)
sudo bash install-docker-linux.sh
# 指定版本
sudo bash install-docker-linux.sh --version 24.0.7
# 海外机器,不用国内镜像
sudo bash install-docker-linux.sh --no-mirror
# 只要 Engine,不装 Compose
sudo bash install-docker-linux.sh --no-compose
四、脚本执行时,核心流程是什么?
这套脚本按照固定顺序执行,保证结果稳定:
- 检查 root 权限
- 检查网络联通性(国内/国际)
- 检查磁盘可用空间
- 识别发行版、版本、CPU 架构
- 检测本机是否已安装 Docker
- 选择默认版本或指定版本
- 更新包索引,安装依赖
- 添加 Docker 官方 GPG 密钥与仓库
- 安装 Docker Engine + Containerd
- 写入
daemon.json - 配置用户组权限
- 启动服务并设置自启
- 执行安装后验证
- 输出安装摘要与日志位置
如果中途任意步骤失败,会立即退出并提示错误点,避免出现“半安装状态”。
五、如果机器上已经有 Docker,怎么处理?
脚本会自动检测并给出选择:
- 卸载后重装
- 保持现有版本不变
- 升级到指定版本
- 退出脚本
如果你选择“卸载后重装”,还会继续问你:
- 是否保留
/var/lib/docker数据(镜像、容器、卷)
这一步很关键,建议生产环境谨慎确认。
六、为什么我会自动写 daemon.json?
因为很多线上问题都不是“装不上”,而是“默认配置不适合实际场景”。
我在脚本里默认做了这些配置方向:
- 配置多个镜像加速源(提升拉镜像速度与可用性)
- 限制容器日志文件大小(防止磁盘被日志打满)
- 使用
overlay2存储驱动 - 开启
live-restore - 设置较合理的并发下载与文件句柄上限
你也可以按自己的场景再细调:
sudo nano /etc/docker/daemon.json
sudo systemctl restart docker
docker info
七、安装完成后,我建议你做这 4 个验证
docker --version
docker info
docker compose version
docker run --rm hello-world
如果这 4 项都通过,基础可用性就没问题了。
另外,若当前用户还需要 sudo 才能运行 Docker,一般是组权限没刷新:
newgrp docker
或者重新登录终端会话。
八、常见报错,优先这么排查
1)权限报错
- 现象:提示必须 root
- 处理:确保使用
sudo bash install-docker-linux.sh
2)网络/GPG 相关报错
- 先验证 DNS 和外网访问
- 内网环境可配置代理后重试
3)Docker 服务启动失败
优先看这条日志:
sudo journalctl -xeu docker.service --no-pager | tail -50
其次检查 daemon.json 是否合法 JSON。
4)镜像拉取慢/失败
- 检查镜像加速源是否生效:
docker info | grep -A 10 "Registry Mirrors"
九、什么时候建议完全卸载 Docker?
以下情况建议完整清理后重装:
- 多轮升级后环境状态混乱
- 配置文件长期手工改动、难以追溯
- 引擎版本和依赖出现兼容性问题
但请注意:
完整卸载前,务必确认是否保留 /var/lib/docker 数据。
十、写在最后:脚本化的价值,不是“偷懒”,是“稳定可复制”
我做这份脚本的核心目标是:
- 新机器快速初始化
- 多环境配置保持一致
- 出问题时可定位、可回滚
如果你也在做 Linux 下 Docker 标准化落地,希望这篇能帮你少踩一些坑。