构筑容器化基石:Docker 稳定版本抉择、极速安装与配置全解

构筑容器化基石:Docker 稳定版本抉择、极速安装与配置全解

在云原生时代,Docker 已经从一个"加分技能"变成了开发与运维人员的"必备基本功"。然而,在实际的生产环境部署中,面对众多的 Docker 版本我们该如何选择?在国内复杂的网络环境下,如何解决安装缓慢、拉取镜像超时等痛点?

这篇博客将为你提供一份从理论到实战的 Docker 部署指南。我们将通过直观的对比梳理 Docker 的核心版本演进,并手把手教你如何利用国内源极速安装 Docker 与 Docker Compose,最后提供一份配置了最新有效国内加速器且可直接应用于生产环境的 daemon.json 手册。无论你是刚接触容器的新手,还是寻求标准化部署规范的老鸟,本文都将为你提供清晰的操作路径。


一、 Docker 稳定版本演进与核心区别

Docker 的版本号命名规则在 2017 年发生了重大改变,从 1.x 变更为基于年月的时间线格式(YY.MM),并分为 CE(社区版)EE(企业版) 。对于绝大多数开发者和企业,Docker CE 是首选。

以下是近年来几个核心稳定版本大跨度的演进、区别与选型建议:

Docker 稳定版本 时代定位 核心突破与关键特性 适用场景与选型建议
19.03 经典成熟期 • 安全提升 :引入 Rootless 模式实验性支持。 • 构建优化:BuildKit 开始成为可选的构建引擎,显著提升速度。 仅限维护 。很多老旧业务系统仍在使用,极其稳定,但新项目不再推荐
20.10 现代化基石 • 资源控制 :全面支持 cgroups v2,控制更精细。 • 核心成熟 :Rootless 模式正式可用 (GA),支持双栈 IPv6。 • 兼容性极佳:无缝支持较旧的 Linux 内核。 稳妥之选 。目前企业生产环境采用率极高,适合需要兼顾现代特性与老旧服务器内核兼容性的系统迁移。
24.0 / 25.0+ 云原生深度融合 • 底层重构 :更深度的 containerd 集成。 • 构建革命 :Buildx 趋于完美,极简实现多架构镜像(x86/ARM)同构。 • 性能飞跃:改进 overlay 网络,系统更加精简高效。 首选推荐 。面向未来的版本,新项目无脑选择,以享受最新的构建速度优化、底层性能红利和安全更新。

二、 Docker 极速安装(基于国内源)

以下操作以国内最常用的 Linux 发行版之一 Ubuntu / DebianCentOS 为例,全程使用阿里云镜像源保障下载速度。

1. 卸载旧版本(如果存在)

在安装新版本之前,清理系统中的遗留环境是好习惯。

Ubuntu / Debian:

bash 复制代码
sudo apt-get remove docker docker-engine docker.io containerd runc

CentOS:

bash 复制代码
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

2. 配置国内软件源并安装

针对 Ubuntu / Debian:
bash 复制代码
# 1. 更新 apt 包索引并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 2. 添加阿里云 Docker 官方 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 3. 设置阿里云稳定版仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. 安装 Docker CE、CLI 和 containerd
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
针对 CentOS:
bash 复制代码
# 1. 安装必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 2. 添加阿里云 Docker CE 软件源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 3. 安装 Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

三、 Docker 部署配置手册(国内加速与生产调优)

安装完成后,绝对不要急于启动服务。我们需要配置 daemon.json。这一步不仅彻底解决国内拉取镜像超时的痛点,还包含了生产环境必备的数据盘规划与日志清理策略。

1. 编写 daemon.json

创建或修改 Docker 的核心配置文件:

bash 复制代码
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json

将以下内容写入配置文件(已更新为稳定可用的加速节点):

json 复制代码
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  },
  "data-root": "/var/lib/docker",
  "live-restore": true
}

核心参数深度解析

  • registry-mirrors: 国内镜像加速器。配置了两个当前高效且稳定的第三方加速节点,保障镜像拉取顺畅。
  • log-opts: 防爆盘神器。限制单个容器日志最大 50MB,最多保留 3 个滚动文件。如果不配置,容器长时间运行极易把服务器系统盘写满导致宕机。
  • data-root: 数据存储路径 。Docker 数据(镜像、容器、卷)的默认存放位置。如果系统盘空间有限,强烈建议在此处修改为挂载的大容量数据盘路径(如 /data/docker)。
  • live-restore: 业务连续性保障。开启后,即使 Docker 守护进程崩溃或进行升级重启,当前正在运行的容器也不会停止。

2. 启动并验证

bash 复制代码
# 重新加载配置并设置开机自启,随后启动 Docker
sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl start docker

# 验证加速器是否配置成功并生效
docker info | grep "Registry Mirrors" -A 3

四、 Docker Compose 安装(使用国内源)

Docker Compose 是管理多容器应用的利器。现代 Docker 已经全面推崇使用 Go 语言重写的 Compose V2 (作为 Docker CLI 的原生插件 docker compose 使用),而非旧版的 Python 独立二进制文件 docker-compose

如果在第二步中已经成功配置了国内的阿里云软件源并安装了 Docker CE,那么安装 Compose V2 将非常简单,直接使用系统的包管理器即可,无需挂代理去 Github 下载

Ubuntu / Debian:

bash 复制代码
sudo apt-get install -y docker-compose-plugin

CentOS:

bash 复制代码
sudo yum install -y docker-compose-plugin

验证安装

bash 复制代码
docker compose version

(注意:V2 版本的执行命令是 docker compose,中间带有空格,不再有横杠)


结语

到这里,一个标准化、高可用且专为国内网络环境优化的 Docker 生产基座已经搭建完毕。优秀的架构始于坚实的基础,明智的版本选择与规范的守护进程配置策略,将为你后续的容器化之旅省去无数的排错时间。

相关推荐
weisian1512 小时前
Java并发编程--29-分布式ID的6种方案:从单机到分库分表的“身份证”设计
java·分布式·雪花算法·美团leaf·百度uid
美式请加冰2 小时前
最短路径问题
java·数据结构·算法
小江的记录本2 小时前
【JEECG Boot】 JEECG Boot 数据字典管理——六大核心功能(内含:《JEECG Boot 数据字典开发速查清单》)
java·前端·数据库·spring boot·后端·spring·mybatis
小江的记录本2 小时前
【JEECG Boot】 JEECG Boot——Online表单 系统性知识体系全解
java·前端·spring boot·后端·spring·低代码·mybatis
都说名字长不会被发现2 小时前
Spring 线程池最佳实践:如何优雅管理多线程任务
java·spring·线程池·并发编程
wok1572 小时前
WebMVC 和 WebFlux 架构选型
java·spring·架构·mvc
无限进步_2 小时前
【C++】反转字符串的进阶技巧:每隔k个字符反转k个
java·开发语言·c++·git·算法·github·visual studio
希望永不加班2 小时前
SpringBoot 邮件发送:文本邮件与 HTML 邮件
java·spring boot·后端·spring·html
菜菜小狗的学习笔记2 小时前
八股(一)Java基础
java·开发语言