努力
加油

京东云Ubuntu 20.04安装Docker推荐使用官方脚本吗?

直接给结论:不推荐在生产环境或正式业务中使用官方的一键安装脚本(get-docker.sh)。

虽然对于个人开发者在本地测试、或者临时搭建实验环境来说,跑一下那个脚本确实省事,但在企业级运维、尤其是使用京东云这种公有云实例的场景下,这种做法存在不少隐患。

下面从几个维度拆解一下为什么不建议用,以及正确的姿势是什么。

1. 官方脚本的“黑盒”风险

curl -fsSL https://get.docker.com | bash 这个脚本背后到底干了什么?

  • 权限过大:它默认以 root 身份执行,会自动添加 Docker 仓库源、安装最新版本的 Docker Engine 和 Containerd。
  • 版本不可控:它通常会拉取当前最新的稳定版。但在生产环境中,“最新”不等于“最稳”。Docker 的新版本可能引入新的依赖冲突,或者与你的业务代码、内核模块产生兼容性问题。一旦出问题,回滚成本很高。
  • 自动化陷阱:脚本里包含了很多静默安装的逻辑,如果你网络波动或者镜像源在国内访问不畅(虽然京东云有内网提速,但公网源依然可能不稳定),脚本可能会失败且报错信息不明显,导致环境处于半残状态。

2. 京东云环境的特殊性

你在京东云上用的是 Ubuntu 20.04,这是一个 LTS 长期支持版本,系统本身非常稳定。

  • 内核兼容性:Ubuntu 20.04 自带的内核是 5.4.x 系列。Docker 官方脚本安装的最新版 Docker 可能对内核要求较高,或者需要额外的内核模块。手动安装可以让你更清晰地看到是否需要升级内核,或者配置 apt 源时的依赖关系。
  • 安全合规:国内云厂商对安全审计比较严格。使用非标准的、来源不明的自动脚本,在某些安全扫描中会被标记为风险操作。手动通过 APT 包管理器安装,路径清晰,日志可查,符合运维规范。
  • 资源隔离与性能:京东云的 ECS 实例通常预装了优化过的内核和驱动。手动安装可以确保你只安装必要的组件,避免脚本可能附带的一些不必要的调试工具或历史遗留包占用磁盘空间。

3. 推荐的正确安装方式(APT 源安装)

这是业界标准做法,也是我在京东云和其他云平台上一贯推荐的方式。步骤如下:

第一步:卸载旧版本(如果有)

sudo apt-get remove docker docker-engine docker.io containerd runc

第二步:设置 APT 仓库

  1. 更新包索引并安装依赖:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
  1. 添加 Docker 官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. 设置稳定的 APT 仓库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

注意:这里使用的是官方国际源。如果在京东云上发现下载速度慢,可以考虑使用阿里云或清华大学的 Docker 镜像源替代上述 https://download.docker.com... 部分。例如:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable
(注:Ubuntu 20.04 对应 codename 是 focal,但 Docker 官方源有时对较老版本支持有限,建议先确认源的有效性。如果阿里云源可用,优先用国内镜像源提速。)

第三步:安装 Docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

第四步:验证安装

sudo docker run hello-world

4. 后续必做:非 Root 用户运行 & 开机自启

安装完后,别急着开始跑业务,还有两件事要做:

  1. 允许普通用户运行 Docker(避免每次都要 sudo):
sudo groupadd docker
sudo usermod -aG docker $USER
# 重新登录生效
  1. 设置开机自启并启动服务:
sudo systemctl enable docker
sudo systemctl start docker

总结

  • 个人学习/临时测试:可以用官方脚本,图个快,出了事重装实例就行。
  • 生产环境/京东云业务:坚决不用脚本。采用 APT 源手动安装,可控、可追溯、可回滚。同时记得配置好 Docker 的日志轮转(logrotate)和存储驱动(overlay2),防止磁盘被日志打满。

在云计算环境下,稳定性压倒一切。手动安装虽然多敲几行命令,但每一步都在你的掌控之中,这才是专业运维该有的样子。