能用的一键部署docker脚本:精准识别/etc/os-release系统类型与版本,自动安装对应依赖;优先包管理器在线安装并切换清华/阿里镜像源,离线时校验本地tgz包;配置daemon.json加速器;启用服务、加docker组、验证docker info;可选集成适配架构的docker-compose二进制及校验。

写一个真正能用的一键部署 Docker 的 Shell 脚本,核心是“适配系统、规避风险、留有余地”。不是简单拼凑命令,而是让脚本能判断环境、处理异常、支持重试,并兼顾线上生产环境的常见约束(比如无外网、需内网镜像源、不能重启服务等)。
识别系统并准备基础依赖
脚本开头必须准确识别发行版和版本号,避免在 CentOS 8 上执行 yum 命令,或在 Ubuntu 上硬装 rpm 包。推荐用 /etc/os-release 文件读取 ID 和 VERSION_ID:
- CentOS/RHEL 系列:安装
yum-utils、device-mapper-persistent-data、lvm2 - Ubuntu/Debian 系列:安装
apt-transport-https、ca-certificates、curl、gnupg-agent、software-properties-common - 若系统未预装
wget或curl,脚本应自动补装,而不是直接报错退出
选择安装方式并加载镜像源
优先使用包管理器安装(如 yum install docker-ce),它能自动处理依赖和 systemd 配置;仅当无法联网或策略限制时,才走二进制静态安装(docker-${VER}.tgz 解压 + 软链)。
- 在线安装时,替换默认源为国内镜像(如清华、阿里云),例如:
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo - 离线安装时,脚本应检查本地是否存在
docker-*.tgz文件,不存在则提示用户上传,不强行 wget - 无论哪种方式,都应在
/etc/docker/daemon.json中预置国内镜像加速地址(如https://registry.cn-hangzhou.aliyuncs.com),避免后续手动配置
安装后必须做的三件事
装完 Docker 不等于可用。脚本需主动完成以下验证与加固:
- 启动服务并设为开机自启:
systemctl enable --now docker - 将当前用户加入
docker组(避免每次 sudo),并提示用户新开终端生效:usermod -aG docker $USER - 运行
docker info检查是否正常,失败则输出错误日志路径(如journalctl -u docker -n 50),不静默跳过
可选但强烈建议集成 docker-compose
多数生产场景离不开 docker-compose,脚本应支持一键拉取官方二进制文件(注意架构适配 x86_64/arm64):
- 从
https://github.com/docker/compose/releases下载对应版本(推荐 v2.25+),校验 SHA256(可选) - 复制到
/usr/local/bin/docker-compose并加执行权限 - 测试运行:
docker-compose version,失败则回退并提示网络或权限问题
不复杂但容易忽略:真正的“一键”不是省事,而是让运维人员拿到脚本后,不用查文档、不改代码、不猜命令,执行一次就能在目标机器上得到一致、可用、可审计的 Docker 环境。











