一、为什么 Docker 仍然值得学

这些年大家常说 Docker “失宠”了,但这并不等于 Docker 没价值。相反,在很多实际场景里,Docker 依旧是最容易上手、生态最完整、资料最丰富的容器工具。

它之所以仍然重要,主要有几个原因:

  • 依旧是产品交付和镜像打包的最佳实践之一
  • 依旧是本地开发和测试最常见的容器工具
  • 镜像和容器管理方式足够灵活
  • 大量企业仍以 Docker 作为容器入门和交付工具

所以学习 Docker,不是为了停留在 Docker 本身,而是为了更顺畅地进入整个容器与云原生体系。

二、Docker 的基本概念和核心组件

Docker 是一个开源的容器引擎,核心目标是把应用和依赖打包进可移植的容器中,并让这些容器能够在不同 Linux 或 Windows 环境中尽可能一致地运行。

Docker 的主要组件包括:

  • Docker Client:客户端,负责执行命令
  • Docker Daemon:守护进程,负责真正管理镜像和容器
  • Docker Image:镜像,作为模板使用
  • Docker Container:容器,镜像运行后的实例
  • Docker Registry:镜像仓库,负责集中存储和分发镜像

三、Docker 架构是怎么运作的

Docker 的典型交互链路是:

  1. 用户在客户端执行命令
  2. 命令发送给 Docker Daemon
  3. Daemon 根据需要与本地镜像库、容器运行时和远端 Registry 交互
  4. 最终完成镜像拉取、构建或容器启动

下图展示了 Docker 架构中的主要交互关系:

Docker 架构图

如果用几个最常见命令来理解:

  • docker pull nginx:从 Registry 拉取镜像到本地
  • docker run nginx:根据本地镜像启动容器
  • docker push:把本地镜像上传回仓库

四、OCI、containerd 和 runc 分别是什么

学习 Docker 时,很多人还会遇到 OCI、containerd 和 runc 这些术语。

4.1 OCI

OCI 是 Open Container Initiative 的缩写,它围绕容器格式和运行时定义开放标准。可以把它理解为容器生态中的“通用规范层”。

4.2 containerd

containerd 是从 Docker 中逐渐剥离出来的核心运行时管理组件,用于负责镜像拉取、容器生命周期等运行时相关工作。即使不启动 Docker,也可以直接使用 containerd 来管理容器。

4.3 runc

runc 是遵循开放容器格式规范的轻量运行工具,用来真正创建和运行容器。

理解这三者的关系后,你就更容易明白:Docker 并不等于底层运行时本身,它更像是一个面向开发者和运维人员的完整使用入口。

五、Rocky Linux 9.4 安装 Docker

5.1 替换系统源并生成缓存

sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
    -i.bak \
    /etc/yum.repos.d/Rocky-*.repo

dnf makecache

5.2 安装必要工具

yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y

5.3 添加 Docker 仓库并安装

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y

5.4 启动 Docker

systemctl daemon-reload
systemctl enable --now docker

5.5 配置镜像加速器

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://y0araofw.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

5.6 启动测试容器

docker run -d -p 8888:80 registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1
docker ps
curl 10.0.0.12:8888

六、Ubuntu 24.04 安装 Docker

6.1 配置 APT 镜像源

vim /etc/apt/sources.list

可以按原始笔记替换为阿里云镜像源,然后执行:

apt-get update

6.2 安装基础工具

apt-get -y install apt-transport-https ca-certificates curl software-properties-common

6.3 添加 Docker 仓库

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

6.4 安装并启动 Docker

apt-get -y update
apt-get -y install docker-ce

6.5 配置镜像加速器并验证

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://y0araofw.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

docker run -d -p 8888:80 registry.cn-beijing.aliyuncs.com/dotbalo/counter:v1
docker ps
curl 10.0.0.83:8888

七、安装完成后应该重点看哪些信息

安装成功后,最常用的两个检查命令是:

docker version
docker info

通过它们可以快速确认:

  • Client 和 Server 版本
  • API 版本
  • containerd 和 runc 版本
  • 存储驱动是否正常
  • Cgroup Driver 是否合理
  • Docker 数据目录和镜像加速器是否生效

尤其在生产环境里,docker info 里的 Storage DriverLogging DriverCgroup DriverDocker Root DirRegistry Mirrors 都很值得重点关注。

八、为什么这篇安装指南对后续 Kubernetes 学习仍然有价值

虽然 Kubernetes 现在通常直接对接 containerd,但学会 Docker 仍然有很强的现实意义:

  • 你能更容易理解镜像和容器的生命周期
  • 你能快速完成本地实验与服务验证
  • 你能更顺畅地理解镜像构建、分发和运行逻辑
  • 你在学习 Kubernetes 工作负载时会更清楚容器到底是怎么被创建出来的

所以,从 Docker 入门并不落后,反而是很多工程师进入容器世界最有效的一条路径。