Docker 一键安装脚本:从裸机到生产级容器环境只需 5 分钟
结论先行:直接跑官方
get.docker.com会在生产环境埋下两大隐患:默认不做日志轮转会导致单个容器日志吃满整块硬盘引发系统崩溃,默认未开启live-restore导致每次守护进程重启都会杀掉全部在线容器。生产级安装铁律:安装最新 Docker CE + Compose V2 后,必须在/etc/docker/daemon.json中配置日志最大 50MB 自动轮转(保留 3 份归档)与"live-restore": true免停机平滑重载,并将当前运维用户加入docker用户组免去频繁敲sudo。借助开源脚本docker-quick-deploy,一条命令即可自动完成全部生产基线配置。
很多人以为在 VPS 上敲完
curl -fsSL https://get.docker.com | bash就大功告成,结果跑了数月后服务器突然磁盘耗尽死机。本篇为你梳理从裸机安装、生产级守护进程加固到日常容器管理的全流程避坑方案。
0、写在前面
新开了一台出海 VPS,部署微服务、反向代理与数据库的第一步就是安装 Docker。
传统运维文章常引导新手走繁琐的手动路线:添加官方 apt 软件源、导入 GPG 签名公钥、生成 sources 列表、更新缓存、再分别安装各个组件。对于多机部署或频繁重装的场景,这种重复劳动非常浪费时间。
然而,仅依赖官方初始安装脚本同样存在严重疏漏:
- 日志打爆硬盘:Docker 默认使用
json-file驱动且不设置上限,一旦某个容器发生异常死循环打印日志,数周内就能吞噬几十 GB 磁盘空间,直接造成操作系统只读挂死; - 守护进程重载导致业务全崩:升级或重启 Docker 服务时,默认会将所有正在运行的应用容器全部强制终止;
- 运维操作繁琐:未将非 root 运维用户纳入用户组,导致每次敲击容器命令都必须前置
sudo。
本篇指南带你在 5 分钟内构建安全、防爆盘且免维护的生产级 Docker 运行环境。
1、期望目标
阅读并完成本篇实战后,你将达成以下运维标准:
- [ ] 掌握官方 Docker CE 与 Docker Compose V2 插件的自动化安装机制;
- [ ] 在
/etc/docker/daemon.json中配置日志限额与轮转策略,彻底消除日志爆盘隐患; - [ ] 开启
live-restore免停机平滑重载特性,维护 Docker 守护进程时保障容器平稳在线; - [ ] 正确配置非 root 用户的
docker组权限,摆脱繁琐的sudo提权; - [ ] 针对境内外不同网络环境,掌握智能镜像加速源的快速配置;
- [ ] 使用开源脚本
ittinker-scripts/docker-quick-deploy一步到位交付生产环境。
2、技术选型与生产基线架构
2.1 生产级 Docker 守护进程配置模型
2.2 裸装脚本 vs 生产加固配置差异
| 评测维度 | 官方裸装 get.docker.com |
生产级基线配置(推荐) | 风险防范说明 |
|---|---|---|---|
| 日志轮转上限 | 默认无限制(无限膨胀) | 单容器限制 50MB × 3 份归档 | 根绝磁盘被日志打爆导致系统假死 |
| 守护进程平滑重载 | 默认关闭(重启 daemon 即 Kill 容器) | "live-restore": true |
升级 Docker 软件时业务容器不掉线 |
| Compose 版本 | 视系统源不同可能残留 V1 | 强制锁定 Compose V2 插件版 | 保证微服务模板现代化与安全维护 |
| 命令行调用权限 | 仅限 root 用户操作 | 当前运维用户加入 docker 组 |
避免频繁使用 root 提权导致误操作 |
| 多核网络并发 | 系统默认配置 | 可选开启 IPv6 与自定义网桥 MTU | 避免跨容器网络跨层通讯 MTU 丢包 |
3、生产级配置文件核心要素拆解
在安装 Docker 前后,最关键的一步是为系统注入生产级 /etc/docker/daemon.json。
完整的加固模板如下:
1 | { |
核心参数原理解析:
log-driver与log-opts:
限制每个容器产生的日志文件单体大小不超过 50MB,且最多滚动保留 3 个归档压缩切片。这意味着单个容器无论如何狂暴打印,占用的磁盘空间都不会超过 150MB。live-restore:
保证在执行systemctl restart docker或进行 Docker 自身小版本升级时,后台运行的数据库与业务容器持续保持运行状态,网络连接不中断。default-ulimits:
将容器的文件句柄打开数(nofile)硬限制与软限制统一提升至 65535,避免在跑高并发反向代理或长连接时报错Too many open files。
4、开源工具:使用 docker-quick-deploy 一键安装
手动安装依赖、拉取仓库、配置 daemon 并配置用户组依然繁琐。我们可以使用 ITTinker 维护的开源自动化脚本 docker-quick-deploy 一键搞定。
4.1 开源脚本说明
- 开源仓库地址:ittinker-scripts/docker-quick-deploy
- 自动化特性:
- 自动识别当前 Linux 发行版(Ubuntu 20.04/22.04/24.04、Debian 11/12、CentOS/RHEL/Rocky);
- 全自动安装最新版 Docker CE、CLI 与 Docker Compose V2 插件;
- 自动向
/etc/docker/daemon.json写入上述生产级日志轮转与live-restore配置; - 自动获取当前登录的非 root 用户并加入
docker组; - 自动激活 systemd 开机自启服务并测试容器运行。
4.2 极速安装步骤
在服务器终端执行以下命令:
1 | # 1. 克隆运维工具库 |
等待 1 到 2 分钟,脚本将自动完成所有生产环境配置。
安装完成后,执行以下命令使组权限即时生效,无需重启服务器:
1 | newgrp docker |
5、手工标准化安装备忘(全平台通用)
若在无法直接克隆 Git 仓库的受限环境中,可参考以下标准化手工流程。
5.1 第一步:安装 Docker CE 与 Compose V2
执行官方自动化检测脚本:
1 | # 1. 安装基础传输依赖 |
5.2 第二步:写入生产加固配置
1 | # 创建配置目录 |
5.3 第三步:配置普通用户免 sudo
1 | # 将当前终端登录用户加入 docker 用户组 |
6、状态检验与生产基线核验
配置完成后,使用以下命令检查生产环境健康状态:
6.1 检查组件版本与架构
1 | # 验证 Docker 引擎与 Compose 插件 |
输出应类似:
1 | Docker version 27.x.x, build xxxxx |
确保使用 docker compose(中间带空格)而非老旧的 docker-compose。
6.2 检查守护进程配置项
1 | # 检查日志轮转与 live-restore 是否已加载生效 |
合格输出:
1 | Logging Driver: json-file |
6.3 运行基准测试容器
1 | # 运行官方验证轻量容器测试标准输出与网络拉取 |
若看到 Hello from Docker!,说明容器引擎、文件系统与网络调用链路完全正常,--rm 参数在容器退出后已自动销毁临时镜像与实例。
7、高频维护命令与避坑清单
7.1 日常运维高频指令速查表
1 | # 查看全局运行状态与内存占用统计 |
7.2 生产三大铁律
- 容器数据必须挂载外部卷:严禁将业务数据(如 PostgreSQL、MySQL、网站上传附件)直接保存在容器层中。容器必须通过
-v data_volume:/data或具名挂载卷,确保容器重建时数据不丢失; - 永远配置重启策略:为长期运行的应用统一指定
--restart=unless-stopped,避免服务器维护重启后业务容器处于离线状态; - 警惕
docker system prune -a --volumes:该命令会直接清空所有未绑定的持久化数据卷,生产环境下操作前务必确认卷列表,防止灾难性删库。
遵循上述生产标准,你的 VPS 将具备经受长期高负荷运行考验的容器化基础环境。