6 Commits

Author SHA1 Message Date
yeasy
5f653cf338 Fix Unicode punctuation, update model versions and correct content issues
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 19:46:55 -07:00
yeasy
4cc09a28fa Replace straight quotes with curved quotes 2026-03-11 22:19:26 -07:00
yeasy
1dded72085 Add book cover image 2026-03-09 19:07:12 -07:00
yeasy
d3e253a6cc Fix figure captions, numbering, and heading level 2026-03-09 19:03:47 -07:00
yeasy
d6fff9a3f7 Fix broken AliCloud screenshot link 2026-03-09 21:43:51 -07:00
yeasy
fc276d3b4f Expand Compose introduction and value proposition 2026-03-09 21:43:48 -07:00
25 changed files with 79 additions and 111 deletions

View File

@@ -168,7 +168,7 @@ stateDiagram-v2
Deleted --> [*]
```
2-1 容器生命周期状态流转图
2-1容器生命周期状态流转图
#### 常用生命周期命令

View File

@@ -41,7 +41,7 @@ flowchart TB
end
```
2-2 RegistryRepository Tag 的层级关系
2-2RegistryRepository Tag 的层级关系
相关基本概念具体如下
@@ -206,7 +206,7 @@ $ docker pull localhost:5000/myapp:v1.0
│ │ 运行容器 │
```
2-3 镜像构建推送与拉取流程
2-3镜像构建推送与拉取流程
#### 常用命令

View File

@@ -59,11 +59,8 @@ $ sudo apt install \
```bash
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 官方源
## $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```
然后我们需要向 `sources.list` 中添加 Docker 软件源
@@ -73,15 +70,10 @@ $ echo \
"deb [arch=amd64 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
## 官方源
## $ echo \
## "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
## $ stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# $ echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
# $ stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
>以上命令会添加稳定版本的 Docker APT 镜像源如果需要测试版本的 Docker 请将 stable 改为 test
@@ -103,12 +95,11 @@ $ sudo apt install docker-ce docker-ce-cli containerd.io
> 若你想安装测试版的 Docker请从 test.docker.com 获取脚本
```bash
## $ curl -fsSL test.docker.com -o get-docker.sh
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
## $ sudo sh get-docker.sh --mirror AzureChinaCloud
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
```
执行这个命令后脚本就会自动的将一切准备工作做好并且把 Docker 的稳定 (stable) 版本安装在系统中

View File

@@ -48,11 +48,8 @@ $ sudo apt-get install \
```bash
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 官方源
## $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```
然后我们需要向 `sources.list` 中添加 Docker 软件源
@@ -64,15 +61,10 @@ $ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## 官方源
## $ echo \
## "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
## $ stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# $ echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
# $ stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
>以上命令会添加稳定版本的 Docker APT 如果需要测试版本的 Docker 请将 stable 改为 testDebian11 可能不使用 `/etc/apt/keyrings/` gpg 错误可以考虑更换为 `/etc/apt/trusted.gpg.d` [issue 15727](https://github.com/docker/docs/issues/15727)。
@@ -94,12 +86,11 @@ $ sudo apt-get install docker-ce docker-ce-cli containerd.io
> 若你想安装测试版的 Docker请从 test.docker.com 获取脚本
```bash
## $ curl -fsSL test.docker.com -o get-docker.sh
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
## $ sudo sh get-docker.sh --mirror AzureChinaCloud
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
```
执行这个命令后脚本就会自动的将一切准备工作做好并且把 Docker 的稳定 (stable) 版本安装在系统中

View File

@@ -54,14 +54,10 @@ $ sudo dnf config-manager \
$ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
## 官方源
## $ sudo dnf config-manager \
## --add-repo \
## https://download.docker.com/linux/fedora/docker-ce.repo
# 官方源
# $ sudo dnf config-manager \
# --add-repo \
# https://download.docker.com/linux/fedora/docker-ce.repo
```
如果需要测试版本的 Docker 请使用以下命令
@@ -102,12 +98,11 @@ $ sudo dnf -y install docker-ce-18.06.1.ce
> 若你想安装测试版的 Docker请从 test.docker.com 获取脚本
```bash
## $ curl -fsSL test.docker.com -o get-docker.sh
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
## $ sudo sh get-docker.sh --mirror AzureChinaCloud
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
```
执行这个命令后脚本就会自动的将一切准备工作做好并且把 Docker 最新稳定 (stable) 版本安装在系统中

View File

@@ -56,14 +56,10 @@ $ sudo dnf config-manager \
$ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
## 官方源
## $ sudo dnf config-manager \
## --add-repo \
## https://download.docker.com/linux/centos/docker-ce.repo
# 官方源
# $ sudo dnf config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
```
如果需要测试版本的 Docker 请执行以下命令

View File

@@ -44,15 +44,10 @@ $ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/raspbian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
## 官方源
## $ sudo install -m 0755 -d /etc/apt/keyrings
## $ curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
## $ sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 官方源
# $ sudo install -m 0755 -d /etc/apt/keyrings
# $ curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# $ sudo chmod a+r /etc/apt/keyrings/docker.gpg
```
然后我们需要向 `sources.list` 中添加 Docker 软件源
@@ -62,15 +57,10 @@ $ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/raspbian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## 官方源
## $ echo \
## "deb [arch=$ signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian \
## $ stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# $ echo \
# "deb [arch=$ signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian \
# $ stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
>以上命令会添加稳定版本的 Docker APT 如果需要测试版本的 Docker 请将 stable 改为 test

View File

@@ -4,7 +4,7 @@
![Docker 数据挂载类型](./_images/types-of-mounts.png)
8-1 Docker 数据挂载类型示意图
8-1Docker 数据挂载类型示意图
这一章介绍如何在 Docker 内部以及容器之间管理数据在容器中管理数据主要有以下几种方式

View File

@@ -12,6 +12,10 @@
### 11.1.1 概述
Docker Compose 让用户能够以声明式方式定义和管理多容器应用它的核心价值在于用一个 YAML 文件取代一连串手动的 `docker run` 命令使得复杂应用的启动停止和重建变得一键可达
对于开发团队而言Compose 解决了三个关键问题环境一致性在我机器上能跑的问题服务依赖管理确保数据库在应用之前启动以及开发-测试-生产的配置差异管理通过 `compose.override.yaml` 实现多环境适配
### 11.1.2 模板文件规范
Compose 模板文件采用 YAML 格式扩展名为 `.yml` `.yaml`

View File

@@ -6,7 +6,7 @@
### 11.6.1 架构概览
在开始之前先看整体架构 (如图 10-1 所示)
在开始之前先看整体架构 (如图 11-1所示)
```mermaid
flowchart TD
@@ -31,7 +31,7 @@ flowchart TD
Port8000 --> Browser
```
10-1 Django + PostgreSQL Compose 架构
11-1Django + PostgreSQL Compose 架构
**关键点**

View File

@@ -6,7 +6,7 @@
### 11.7.1 架构概览
如图 10-2 所示Rails PostgreSQL 在同一 Compose 网络中协同工作
如图 11-2所示Rails PostgreSQL 在同一 Compose 网络中协同工作
```mermaid
flowchart TD
@@ -31,7 +31,7 @@ flowchart TD
Port3000 --> Browser
```
10-2 Rails + PostgreSQL Compose 架构
11-2Rails + PostgreSQL Compose 架构
### 11.7.2 准备工作

View File

@@ -35,8 +35,8 @@ flowchart LR
| 时间 | 事件 |
|------|------|
| 2006 | Google 工程师提出 "process containers" 概念 |
| 2007 | 为避免与 Linux 容器概念混淆更名为 "control groups" (cgroups) |
| 2006 | Google 工程师提出 process containers 概念 |
| 2007 | 为避免与 Linux 容器概念混淆更名为 control groups (cgroups) |
| 2008 | Linux 2.6.242008年1月正式合并 cgroups v1 |
| 2016 | Linux 4.5 引入 cgroups v2 |
| 现在 | Docker 在宿主机支持 cgroups v2 时会自动使用 v2否则回退到 v1 |

View File

@@ -4,7 +4,7 @@
![Kubernetes 标识](./_images/kubernetes_logo.png)
13-1 Kubernetes 项目标识
13-1Kubernetes 项目标识
### 13.1.1 什么是 Kubernetes

View File

@@ -4,7 +4,7 @@
![Kubernetes 基本概念示意图](./_images/kubernetes_design.jpg)
13-2 Kubernetes 基本概念示意图
13-2Kubernetes 基本概念示意图
* 节点 (`Node`)一个节点是一个运行 Kubernetes 中的主机
* 容器组 (`Pod`)一个 Pod 对应于由若干容器组成的一个容器组同个组内的容器共享一个存储卷 (volume)

View File

@@ -17,7 +17,7 @@
![Kubernetes 架构](./_images/k8s_architecture.png)
13-3 Kubernetes 运行原理图
13-3Kubernetes 运行原理图
可见Kubernetes 首先是一套分布式系统由多个节点组成节点分为两类一类是属于管理平面的主节点/控制节点 (Master Node)一类是属于运行平面的工作节点 (Worker Node)
@@ -52,4 +52,4 @@
![Proxy 代理对服务的请求](./_images/kube-proxy.png)
13-4 kube-proxy 请求转发示意图
13-4kube-proxy 请求转发示意图

View File

@@ -1,10 +1,10 @@
## 15.1 简介
如图 12-5 所示etcd 项目使用该标识
如图 15-1所示etcd 项目使用该标识
![etcd 标识](./_images/etcd_logo.png)
12-5 etcd 项目标识
15-1etcd 项目标识
`etcd` `CoreOS` 团队于 2013 6 月发起的开源项目它的目标是构建一个高可用的分布式键值 (`key-value`) 数据库基于 `Go` 语言实现我们知道在分布式系统中各种服务的配置信息的管理分享服务的发现是一个很基本同时也是很重要的问题`CoreOS` 项目就希望基于 `etcd` 来解决这一问题

View File

@@ -1,10 +1,10 @@
## 16.2 腾讯云
如图 13-5 所示腾讯云提供完整的云基础设施与容器能力
如图 16-1所示腾讯云提供完整的云基础设施与容器能力
![腾讯云](./_images/qcloud-logo.jpg)
13-5 腾讯云标识
16-1腾讯云标识
[腾讯云](https://cloud.tencent.com/act/cps/redirect?redirect=1040\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console)在架构方面经过多年积累,并且有着多年对海量互联网服务的经验。不管是社交、游戏还是其他领域,都有多年的成熟产品来提供产品服务。腾讯在云端完成重要部署,为开发者及企业提供云服务、云数据、云运营等整体一站式服务方案。
@@ -14,7 +14,7 @@
![腾讯云容器服务界面](https://mc.qcloudimg.com/static/img/0581dbeb97c869bbe6e62025dbc592d7/image.png)
13-6 腾讯云容器服务示意图
16-2腾讯云容器服务示意图
### 腾讯云容器服务 (TKE) 简介
@@ -25,7 +25,7 @@
#### 1. 创建集群
登录腾讯云控制台进入容器服务模块
- 选择 "创建集群"配置集群名称地域和网络
- 选择 创建集群配置集群名称地域和网络
- 选择节点配置云服务器规格和数量
- 设置 Kubernetes 版本和安全组
- 完成创建后获得集群 kubeconfig 文件
@@ -128,9 +128,9 @@ docker info | grep -A 5 "Registry Mirrors"
对于 Docker Desktop在设置界面中
1. 打开 Docker Desktop 设置
2. 导航到 "Docker Engine"
2. 导航到 Docker Engine
3. JSON 配置中添加上述 `registry-mirrors` 字段
4. 点击 "Apply & Restart"
4. 点击 Apply & Restart
### 腾讯云容器镜像服务 (TCR)

View File

@@ -1,10 +1,10 @@
## 16.3 阿里云
如图 13-3 所示阿里云是国内主流云服务平台之一
如图 16-3所示阿里云是国内主流云服务平台之一
![阿里云](./_images/aliyun-logo.png)
13-3 阿里云标识
16-3阿里云标识
[阿里云](https://www.aliyun.com/?source=5176.11533457\&userCode=8lx5zmtu\&type=copy)创立于 2009 年,是中国较早的云计算平台。阿里云致力于提供安全、可靠的计算和数据处理能力。
@@ -12,9 +12,10 @@
[阿里云容器服务 Kubernetes ACK](https://www.aliyun.com/product/kubernetes?source=5176.11533457\&userCode=8lx5zmtu\&type=copy) 提供了高性能、可伸缩的容器应用管理服务,支持在一组云服务器上通过 Docker 容器来进行应用生命周期管理。容器服务极大简化了用户对容器管理集群的搭建工作,无缝整合了阿里云虚拟化、存储、网络和安全能力。容器服务提供了多种应用发布方式和流水线般的持续交付能力,原生支持微服务架构,助力用户无缝上云和跨云管理。
![阿里云容器服务界面](https://img.alicdn.com/tps/TB10yjtPpXXXXacXXXXXXXXXXXX-1531-1140.png)
<!-- 注意阿里云容器服务截图链接已失效请参考阿里云官方文档获取最新界面截图 -->
<!-- 原链接: https://img.alicdn.com/tps/TB10yjtPpXXXXacXXXXXXXXXXXX-1531-1140.png -->
13-4 阿里云容器服务示意图
16-4阿里云容器服务示意图请访问 [阿里云容器服务 ACK 官方文档](https://help.aliyun.com/product/85222.html) 查看最新界面)
### 阿里云容器服务 ACK 简介
@@ -25,7 +26,7 @@
#### 1. 创建集群
登录阿里云控制台进入容器服务 > Kubernetes 集群
- 点击 "创建集群"选择集群配置
- 点击 创建集群选择集群配置
- 配置集群名称地域可用区和节点类型
- 选择节点规格和数量支持弹性伸缩
- 配置网络参数和安全设置
@@ -106,7 +107,7 @@ kubectl get svc web-service
#### 获取加速器地址
登录阿里云容器镜像服务控制台 "镜像工具" > "镜像加速器" 中可获取个人的加速器地址类似于 `https://xxxxxx.mirror.aliyuncs.com`
登录阿里云容器镜像服务控制台 镜像工具 > 镜像加速器 中可获取个人的加速器地址类似于 `https://xxxxxx.mirror.aliyuncs.com`
#### Linux 系统配置
@@ -143,9 +144,9 @@ docker info | grep -A 5 "Registry Mirrors"
#### Windows/Mac 配置
Docker Desktop Settings
1. 进入 "Docker Engine" 标签
1. 进入 Docker Engine 标签
2. 编辑 JSON 配置添加 `registry-mirrors` 字段
3. 点击 "Apply & Restart"
3. 点击 Apply & Restart
#### 测试加速效果

View File

@@ -1,10 +1,10 @@
## 16.4 亚马逊云
如图 13-1 所示AWS 是全球主流云服务平台之一
如图 16-5所示AWS 是全球主流云服务平台之一
![AWS](./_images/aws-logo.jpg)
13-1 AWS 标识
16-5AWS 标识
[AWS](https://www.amazonaws.cn),即 Amazon Web Services是亚马逊 (Amazon) 公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务使用户几乎能够在云中运行一切应用程序从企业应用程序和大数据项目到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT 投入成本和维护成本。
@@ -23,4 +23,4 @@
![AWS 容器服务](./_images/ECS.jpg)
13-2 AWS 容器服务示意图
16-6AWS 容器服务示意图

View File

@@ -1,4 +1,4 @@
# Fedora CoreOS
## Fedora CoreOS
`CoreOS` 是一个专门为安全和大规模运行容器化工作负载而构建的新 Fedora 版本它继承了 Fedora Atomic Host CoreOS Container Linux 的优势

View File

@@ -12,7 +12,7 @@
- **通用镜像** (DebianUbuntu) - 提供完整的 Linux 功能和丰富的软件生态镜像大小通常在 100-300 MB 之间适合需要灵活安装各种依赖和工具的应用场景
- **企业级镜像** (CentOSFedora) - 基于 Red Hat 生态广泛应用于企业环境和复杂系统应用提供了 yum 包管理器和强大的系统管理工具
选择镜像的关键原则是 "小而够用"选择满足应用需求的最小镜像这样可以减少安全漏洞表面积加快镜像拉取和推送速度降低存储成本同时也使容器更便于分发和部署
选择镜像的关键原则是 小而够用选择满足应用需求的最小镜像这样可以减少安全漏洞表面积加快镜像拉取和推送速度降低存储成本同时也使容器更便于分发和部署
## 常用操作系统镜像对比

View File

@@ -2,11 +2,11 @@
## DevOps 背景介绍
DevOps 是一种重要的开发和运维文化强调开发团队和运维团队之间的协作和自动化它致力于通过自动化和流程优化加快软件交付速度同时提高系统的稳定性和可靠性Docker 作为容器化技术的领导者已成为现代 DevOps 工作流中不可或缺的工具通过容器化应用开发团队可以确保"一次构建,处处运行"消除开发测试和生产环境的差异大大简化了部署流程
DevOps 是一种重要的开发和运维文化强调开发团队和运维团队之间的协作和自动化它致力于通过自动化和流程优化加快软件交付速度同时提高系统的稳定性和可靠性Docker 作为容器化技术的领导者已成为现代 DevOps 工作流中不可或缺的工具通过容器化应用开发团队可以确保一次构建处处运行消除开发测试和生产环境的差异大大简化了部署流程
## Docker DevOps 中的角色
Docker DevOps 工作流中承担多个关键角色首先它标准化了应用的开发和部署环境使得团队成员在相同的 Docker 容器中工作避免了"在我的机器上可以运行"的问题其次Docker CI/CD 流程无缝集成通过自动化的镜像构建测试和部署实现快速的迭代周期此外Docker 还支持微服务架构和容器编排使团队能够更灵活地扩展应用和管理基础设施
Docker DevOps 工作流中承担多个关键角色首先它标准化了应用的开发和部署环境使得团队成员在相同的 Docker 容器中工作避免了在我的机器上可以运行的问题其次Docker CI/CD 流程无缝集成通过自动化的镜像构建测试和部署实现快速的迭代周期此外Docker 还支持微服务架构和容器编排使团队能够更灵活地扩展应用和管理基础设施
## CI/CD 管道的重要性

View File

@@ -19,7 +19,7 @@
## 五分钟快速上手
"5分钟运行第一个容器"跟随以下步骤快速体验 Docker
5分钟运行第一个容器跟随以下步骤快速体验 Docker
1. **安装 Docker**第1章根据操作系统完成 Docker 的安装与验证
2. **第一个容器**执行 `docker run hello-world`体验最简单的容器运行
@@ -127,7 +127,7 @@ npx honkit serve
<img width="200" src="https://github.com/yeasy/docker_practice/raw/master/_images/donate.jpeg">
</p>
<p align=center><strong>欢迎鼓励项目一杯 coffee~</strong></p>
<p align="center"><strong>欢迎鼓励项目一杯 coffee~</strong></p>
## Star History

BIN
_images/docker_primer4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -68,7 +68,7 @@
![Docker 命令总结](../../_images/cmd_logic.jpg)
16-1 Docker 客户端命令分类示意图
A-1Docker 客户端命令分类示意图
### 参考