5 Commits

Author SHA1 Message Date
yeasy
d0e1a20411 Replace defunct AtomHub mirror with docker.1ms.run 2026-04-05 08:16:08 -07:00
yeasy
fae0a7a092 ci: add auto-release.yml, remove release-pdf.yml, limit CI trigger to master 2026-04-05 07:57:56 -07:00
Baohua Yang
9074524eaa Add recommended reading paths table to README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 22:31:23 -07:00
yeasy
ab2e5651d6 Fix summary section header format 2026-04-04 15:29:10 -07:00
yeasy
6668bfd7b3 Add StatefulSet DaemonSet Job CronJob sections 2026-04-04 15:28:42 -07:00
9 changed files with 159 additions and 27 deletions

View File

@@ -1,4 +1,4 @@
name: Build PDF on Release
name: Auto Release
on:
push:
@@ -10,12 +10,10 @@ permissions:
contents: write
jobs:
build-pdf:
name: Generate PDF
release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- uses: actions/checkout@v6
- name: Install Chromium and CJK fonts
run: |
@@ -27,9 +25,9 @@ jobs:
LATEST_TAG=$(curl -fsSL -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${{ github.token }}" https://api.github.com/repos/yeasy/mdpress/releases/latest | jq -r .tag_name)
VERSION="${LATEST_TAG#v}"
echo "Installing mdpress $VERSION"
curl -fsSL "https://github.com/yeasy/mdPress/releases/download/$LATEST_TAG/mdpress_${VERSION}_linux_amd64.tar.gz" -o mdpress.tar.gz
tar xzf mdpress.tar.gz
sudo mv mdpress /usr/local/bin/
curl -fsSL "https://github.com/yeasy/mdPress/releases/download/$LATEST_TAG/mdpress_${VERSION}_linux_amd64.tar.gz" -o /tmp/mdpress.tar.gz
tar xzf /tmp/mdpress.tar.gz -C /tmp mdpress
sudo mv /tmp/mdpress /usr/local/bin/
mdpress --version
- name: Extract tag name
@@ -39,7 +37,7 @@ jobs:
- name: Build PDF
run: mdpress build --format pdf --output docker_practice-${{ steps.tag.outputs.TAG_NAME || 'latest' }}.pdf
- name: Create Release and upload PDF
- name: Create Release with PDF
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:

View File

@@ -2,6 +2,8 @@ name: CI
on:
push:
branches:
- master
pull_request:
workflow_dispatch:

View File

@@ -14,9 +14,7 @@
* [阿里云加速器](https://cr.console.aliyun.com/cn-hangzhou/instances) (需登录获取个人加速地址)
本节以 [AtomHub 可信镜像中心](https://hub.atomgit.com/)镜像服务 `https://hub.atomgit.com` 为例进行介绍
> `hub.atomgit.com` 仅包含部分官方镜像可以满足初学者的使用
本节以 [毫秒镜像](https://docker.1ms.run) 镜像服务 `https://docker.1ms.run` 为例进行介绍。由于镜像加速服务经常变动,建议查阅上方的镜像测试仓库获取最新可用地址
### 3.9.2 Ubuntu 22.04+Debian 12+Rocky/Alma/CentOS Stream 9+
@@ -34,7 +32,7 @@ $ systemctl cat docker | grep '\-\-registry\-mirror'
```json
{
"registry-mirrors": [
"https://hub.atomgit.com"
"https://docker.1ms.run"
]
}
```
@@ -54,7 +52,7 @@ $ sudo systemctl restart docker
```json
{
"registry-mirrors": [
"https://hub.atomgit.com"
"https://docker.1ms.run"
]
}
```
@@ -66,7 +64,7 @@ $ sudo systemctl restart docker
```json
{
"registry-mirrors": [
"https://hub.atomgit.com"
"https://docker.1ms.run"
]
}
```
@@ -77,7 +75,7 @@ $ sudo systemctl restart docker
```bash
Registry Mirrors:
https://hub.atomgit.com/
https://docker.1ms.run/
```
### 3.9.6 Kubernetes 官方镜像地址迁移
@@ -96,6 +94,7 @@ $ docker pull registry.k8s.io/xxx
某些镜像不再提供服务添加无用的镜像加速器会拖慢镜像拉取速度你可以从镜像配置列表中删除它们
* https://hub.atomgit.com **已于 2024 年底关闭**
* https://dockerhub.azk8s.cn **已转为私有**
* https://reg-mirror.qiniu.com
* https://registry.docker-cn.com

View File

@@ -12,7 +12,7 @@ Docker Buildx 是 Docker 构建系统的重要进化,提供了高效、安全
| **Manifest List** | 多架构镜像的索引文件 |
| **SBOM** | 通过 `--sbom=true` 生成软件物料清单 |
### 10.4.1 延伸阅读
### 延伸阅读
- [Dockerfile 指令详解](../07_dockerfile/README.md)Dockerfile 编写基础
- [多阶段构建](../07_dockerfile/7.17_multistage_builds.md)优化镜像体积

View File

@@ -178,7 +178,121 @@ Deployment 的核心能力包括:
> 早期 Kubernetes 使用 Replication Controller (RC) 来管理副本现已被 ReplicaSet/Deployment 取代
### 13.2.4 服务
### 13.2.4 StatefulSet
Deployment 适合无状态应用 **StatefulSet** 用于管理有状态应用如数据库消息队列 Deployment 不同StatefulSet 为每个 Pod 提供稳定的网络标识和持久化存储
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
serviceName: mysql
replicas: 3
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
```
StatefulSet 的核心特性
* **稳定的网络标识**Pod 名称按顺序编号mysql-0, mysql-1, mysql-2配合 Headless Service 提供可预测的 DNS 名称
* **有序部署与删除**Pod 按序号顺序创建逆序删除
* **持久化存储**通过 `volumeClaimTemplates` 为每个 Pod 自动创建独立的 PVC
### 13.2.5 DaemonSet
**DaemonSet** 确保在集群的每个节点或指定节点上运行一个 Pod 副本典型用途包括日志收集监控代理和网络插件
```yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd:v1.17
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
hostPath:
path: /var/log
```
当新节点加入集群时DaemonSet 会自动在该节点上创建 Pod当节点被移除时对应的 Pod 也会被回收
### 13.2.6 Job CronJob
**Job** 用于运行一次性任务确保指定数量的 Pod 成功完成后自动退出**CronJob** 则按照 cron 表达式周期性地创建 Job
```yaml
apiVersion: batch/v1
kind: Job
metadata:
name: data-migration
spec:
completions: 1
template:
spec:
containers:
- name: migrate
image: myapp/migrate:latest
command: ["python", "migrate.py"]
restartPolicy: Never
backoffLimit: 3
```
```yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-backup
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: myapp/backup:latest
restartPolicy: OnFailure
```
Job `backoffLimit` 控制失败重试次数`completions` 指定需要成功完成的 Pod 数量CronJob 适用于定时备份报表生成等场景
### 13.2.7 服务
服务 (Service) 定义了一组 Pod 的逻辑集合和访问策略由于 Pod IP 地址是动态分配的Service 提供了一个稳定的访问入口
@@ -203,7 +317,7 @@ spec:
| **NodePort** | 在每个节点上开放固定端口集群外部可通过 `节点IP:端口` 访问 |
| **LoadBalancer** | 通过云平台的负载均衡器暴露服务 |
### 13.2.5
### 13.2.8
(Volume) Pod 中的容器提供持久化存储Kubernetes 支持多种卷类型
@@ -216,7 +330,7 @@ spec:
生产环境中推荐使用 PersistentVolume (PV) PersistentVolumeClaim (PVC) 来管理存储实现存储资源与使用者的解耦
### 13.2.6 标签
### 13.2.9 标签
标签 (Label) 是附加到 Kubernetes 对象上的键值对用于组织和选择对象子集标签是 Kubernetes 中实现松耦合的关键机制
@@ -229,7 +343,7 @@ $ kubectl get pods -l env=production
```
ServiceDeployment 等资源都通过标签选择器 (`selector`) 来关联目标 Pod
### 13.2.7 API 访问控制
### 13.2.10 API 访问控制
Kubernetes API 的访问通过三个阶段进行控制
@@ -237,11 +351,11 @@ Kubernetes API 的访问通过三个阶段进行控制:
2. **授权 (Authorization)**判断请求者是否有权限执行操作通常使用 RBAC
3. **准入控制 (Admission Control)**在请求被持久化之前对其进行校验或修改
### 13.2.8 Dashboard
### 13.2.11 Dashboard
Kubernetes Dashboard 是一个基于 Web 的用户界面用于部署容器化应用监控集群资源和排查问题Dashboard 的部署方法详见[部署 Dashboard](../14_kubernetes_setup/14.7_dashboard.md) 章节
### 13.2.9 命令行工具 kubectl
### 13.2.12 命令行工具 kubectl
`kubectl` Kubernetes 的命令行工具用于与集群进行交互常用命令如下

View File

@@ -5,14 +5,17 @@ Kubernetes 是当前最主流的容器编排平台,其声明式管理模型和
| 概念 | 要点 |
|------|------|
| **Pod** | 最小调度单位包含一组共享网络和存储的容器 |
| **Deployment** | 管理 Pod 副本集支持滚动更新和回滚 |
| **Deployment** | 管理无状态应用的 Pod 副本集支持滚动更新和回滚 |
| **StatefulSet** | 管理有状态应用提供稳定的网络标识和持久化存储 |
| **DaemonSet** | 确保每个节点运行一个 Pod 副本适用于日志监控等场景 |
| **Job/CronJob** | 运行一次性或定时任务确保任务成功完成 |
| **Service** | Pod 提供稳定的网络访问入口和负载均衡 |
| **Namespace** | 资源隔离和多租户支持 |
| **ConfigMap/Secret** | 配置与敏感信息的管理 |
| **Master 节点** | 运行 API ServerSchedulerController Manager |
| **Worker 节点** | 运行 kubeletkube-proxy 和容器运行时 |
### 13.6.1 延伸阅读
### 延伸阅读
- [部署 Kubernetes](../14_kubernetes_setup/README.md)搭建 Kubernetes 集群
- [Etcd](../15_etcd/README.md)Kubernetes 使用的分布式存储

View File

@@ -10,7 +10,7 @@
| **K3s** | 边缘计算/IoT | 轻量级资源占用少 |
| **手动部署** | 学习原理 | 逐步配置每个组件加深理解 |
### 14.9.1 延伸阅读
### 延伸阅读
- [容器编排基础](../13_kubernetes_concepts/README.md)Kubernetes 核心概念
- [Dashboard](14.7_dashboard.md)部署可视化管理界面

View File

@@ -11,7 +11,7 @@ etcd 是 Kubernetes 的核心存储组件,为分布式系统提供可靠的键
| **etcdctl** | 命令行管理工具支持 put/get/del/watch 等操作 |
| **安全** | 支持 TLS 加密通信和 RBAC 访问控制 |
### 15.5.1 延伸阅读
### 延伸阅读
- [容器编排基础](../13_kubernetes_concepts/README.md)Kubernetes 如何使用 etcd
- [部署 Kubernetes](../14_kubernetes_setup/README.md)在集群中部署 etcd

View File

@@ -101,6 +101,16 @@ docker run -it --rm -p 4000:80 ccr.ccs.tencentyun.com/dockerpracticesig/docker_p
> * 341410255 (I), 419042067 (II), 210028779 (III), 483702734 (IV), 460598761 (V)
> * 581983671 (VI), 252403484 (VII), 544818750 (VIII), 571502246 (IX), 145983035 (X)
## 推荐阅读
本书是技术丛书的一部分以下书籍与本书形成互补
| 书名 | 与本书的关系 |
|------|------------|
| [智能体 Harness 工程指南](https://yeasy.gitbook.io/harness_engineering_guide) | Agent 基础设施中的容器化部署与隔离 |
| [大模型安全权威指南](https://yeasy.gitbook.io/ai_security_guide) | 容器安全与 AI 系统安全的交叉实践 |
| [区块链技术指南](https://yeasy.gitbook.io/blockchain_guide) | 区块链节点的容器化部署 |
## 参与贡献
欢迎[参与项目维护](CONTRIBUTING.md)
@@ -137,4 +147,10 @@ docker run -it --rm -p 4000:80 ccr.ccs.tencentyun.com/dockerpracticesig/docker_p
</a>
</p>
## 许可证
本书采用 [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) 许可证。
您可以自由分享和演绎但需署名非商业使用相同方式共享
[1]: https://item.jd.com/10200902362001.html