1. Docker 基础回顾:核心概念、安装与常用命令
在深入 DockerDAG 调度边界发布回滚 之前,必须夯实 Docker 基础。本章从镜像、容器、仓库三大核心概念出发,逐步覆盖安装验证与日常操作命令,为后续的调度编排与发布回滚场景建立统一的操作语境。
1.1 三大核心概念
| 概念 | 定义 | 类比 | 关键特征 |
|---|---|---|---|
| 镜像(Image) | 只读的、分层结构的文件系统模板,包含运行应用所需的代码、运行时、库、环境变量和配置文件。 | 类 / 安装包 | 不可变、分层复用、通过 Dockerfile 构建 |
| 容器(Container) | 镜像的运行实例,拥有独立的文件系统、网络、进程空间,可被启动、停止、删除。 | 对象 / 进程 | 轻量、隔离、可写层(临时)、生命周期短 |
| 仓库(Registry) | 集中存储和分发镜像的服务,支持标签管理、版本控制、访问认证。 | Git 远程仓库 | 公有(Docker Hub)/ 私有(Harbor、Nexus) |
💡 核心原则: 镜像构建一次,到处运行;容器是镜像的标准化运行单元;仓库是镜像的版本管理与分发枢纽。三者构成 Docker 的“构建-分发-运行”闭环。
1.2 Docker 安装与验证
Docker 支持主流操作系统。以下以 Ubuntu 22.04 LTS 为例,展示标准安装流程。
1.2.1 安装步骤
- 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc
- 设置仓库
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
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 Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
1.2.2 安装验证
执行以下命令确认 Docker 已正确安装并运行:
# 查看 Docker 版本信息
docker version
# 查看 Docker 系统信息(含容器数量、存储驱动等)
docker info
# 运行 hello-world 镜像验证容器引擎
docker run hello-world
✅ 验证成功标志:
docker version 输出 Client 和 Server 两部分信息;docker run hello-world 打印欢迎消息并正常退出。
1.3 常用 Docker 命令速查
以下按操作对象分类,列出日常开发与运维中最常用的命令。
| 分类 | 命令 | 说明 | 示例 |
|---|---|---|---|
| 镜像管理 | docker images |
列出本地所有镜像 | docker images --format "table {{.Repository}}\t{{.Tag}}" |
docker pull |
从仓库拉取镜像 | docker pull nginx:1.25-alpine |
|
docker rmi |
删除本地镜像 | docker rmi nginx:1.25-alpine |
|
| 容器管理 | docker run |
创建并启动容器 | docker run -d --name web -p 80:80 nginx |
docker ps |
列出运行中的容器 | docker ps -a(含已停止) |
|
docker stop/start/restart |
控制容器生命周期 | docker stop web |
|
docker rm |
删除容器 | docker rm -f web(强制删除) |
|
| 日志与调试 | docker logs |
查看容器日志 | docker logs -f --tail 100 web |
docker exec |
进入容器内部执行命令 | docker exec -it web bash |
|
| 仓库交互 | docker login |
登录镜像仓库 | docker login registry.example.com |
docker push |
推送镜像到仓库 | docker push myapp:v1.0 |
⚠️ 常见陷阱:
docker run每次都会创建新容器;如需复用,先docker start已有容器。- 删除镜像前必须确保没有容器(包括已停止的)引用该镜像,否则需先
docker rm容器。 docker exec -it中的-it组合用于交互式终端,缺少-t可能导致命令无响应。
1.4 本章小结
- 镜像是只读模板,容器是运行实例,仓库是分发中心,三者构成 Docker 的基石。
- 安装后务必通过
docker version和docker run hello-world验证引擎可用。 - 掌握
pull、run、ps、stop、rm、logs、exec、commit、push九大命令即可覆盖 90% 的日常操作。 - 后续章节将基于这些基础命令,构建 DAG 调度任务与边界发布回滚策略。