This commit is contained in:
Baohua Yang
2026-02-09 12:56:12 -08:00
parent 63377d0431
commit b44c9acd6c
228 changed files with 326 additions and 271 deletions

7
13_ecosystem/README.md Normal file
View File

@@ -0,0 +1,7 @@
# 第十三章 容器生态
本章将介绍容器生态圈的相关项目与服务
* [Fedora CoreOS](coreos/README.md)
* [容器与云计算](cloud/README.md)
* [podman - 下一代 Linux 容器工具](podman/README.md)

View File

@@ -0,0 +1,5 @@
# 容器与云计算
Docker 目前已经得到了众多公有云平台的支持并成为除虚拟机之外的核心云业务
除了 AWSGoogleAzure 国内的各大公有云厂商基本上都同时支持了虚拟机服务和基于 Kubernetes 的容器云业务有的还推出了其他服务例如 [容器镜像服务](https://cloud.tencent.com/act/cps/redirect?redirect=11588&cps_key=3a5255852d5db99dcd5da4c72f05df61) 让用户在云上享有安全高效的镜像托管、分发等服务。

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -0,0 +1,13 @@
## 阿里云
阿里云 示意图如下
![阿里云](../_images/aliyun-logo.png)
[阿里云](https://www.aliyun.com/?source=5176.11533457\&userCode=8lx5zmtu\&type=copy) 创立于 2009 年,是中国较早的云计算平台。阿里云致力于提供安全、可靠的计算和数据处理能力。
[阿里云](https://www.aliyun.com/?source=5176.11533457\&userCode=8lx5zmtu\&type=copy) 的客户群体中,活跃着微博、虎牙、魅族、优酷等一大批明星互联网公司。在天猫双 11 全球狂欢节等极富挑战的应用场景中,阿里云保持着良好的运行纪录。
[阿里云容器服务 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)

13
13_ecosystem/cloud/aws.md Normal file
View File

@@ -0,0 +1,13 @@
## 亚马逊云
亚马逊云 示意图如下
![AWS](../_images/aws-logo.jpg)
[AWS](https://www.amazonaws.cn),即 Amazon Web Services是亚马逊Amazon公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务使用户几乎能够在云中运行一切应用程序从企业应用程序和大数据项目到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT 投入成本和维护成本。
2006 年初起亚马逊 AWS 开始在云中为各种规模的公司提供技术服务平台利用亚马逊 AWS软件开发人员可以轻松购买计算存储数据库和其他基于 Internet 的服务来支持其应用程序开发人员能够灵活选择任何开发平台或编程环境以便于其尝试解决问题由于开发人员只需按使用量付费无需前期资本支出亚马逊 AWS 是向最终用户交付计算资源保存的数据和其他应用程序的一种经济划算的方式
2015 AWS 正式发布了 EC2 容器服务(ECS)ECS 的目的是让 Docker 容器变的更加简单它提供了一个集群和编排的层用来控制主机上的容器部署以及部署之后的集群内的容器的生命周期管理ECS 是诸如 Docker SwarmKubernetesMesos 等工具的替代它们工作在同一个层除了作为一个服务来提供这些工具和 ECS 不同的地方在于前者需要用户自己来部署和管理 ECS 作为服务来提供的
![AWS 容器服务](../_images/ECS.jpg)

View File

@@ -0,0 +1,22 @@
## 简介
随着容器技术的普及目前主流的云计算服务商都提供了成熟的容器服务与容器相关的云计算服务主要分为以下几种类型
### 1. 容器编排托管服务Managed K8s
这是目前最主流的形式云厂商托管 Kubernetes 的控制平面Master节点用户只需管理工作节点Worker Node
* **优势**降低了 Kubernetes 集群的维护成本高可用性由厂商保证
* **典型服务**AWS EKS, Azure AKS, Google GKE, 阿里云 ACK, 腾讯云 TKE
### 2. 容器实例服务Serverless Containers
这一类服务通常被称为 CaaS (Container as a Service)用户无需管理底层服务器EC2/CVM只需提供镜像和配置即可运行容器
* **优势**极致的弹性按秒计费零运维
* **典型服务**AWS Fargate, Azure Container Instances, Google Cloud Run, 阿里云 ECI
### 3. 镜像仓库服务Container Registry
提供安全可靠的私有 Docker 镜像存储服务通常与云厂商的 CI/CD 流水线深度集成
* **典型服务**AWS ECR, Azure ACR, Google GCR/GAR, 阿里云 ACR
本章将介绍如何在几个主流云平台上使用 Docker Kubernetes 服务

View File

@@ -0,0 +1,42 @@
## 多云部署策略比较
企业在选择容器云平台时通常会在 AWS EKS, Azure AKS, Google GKE 以及国内的阿里云 ACK, 腾讯云 TKE 之间进行权衡
### 三大公有云 Kubernetes 服务对比
| 特性 | Google GKE | AWS EKS | Azure AKS |
| :--- | :--- | :--- | :--- |
| **版本更新** | 最快通常是 K8s 新特性的首发地 | 相对保守注重稳定性 | 跟随社区更新速度适中 |
| **控制平面管理** | 全托管自动升级免费部分区域 | 托管每小时收费 | 全托管控制平面免费 |
| **节点管理** | GKE Autopilot 模式完全托管节点 | Managed Node Groups 简化管理 | Virtual Machine Scale Sets |
| **网络模型** | VPC-native, 性能优秀 | AWS VPC CNI, Pod 直接获取 VPC IP | Azure CNI (消耗 IP ) Kubenet |
| **集成度** | GCP 数据分析AI 服务集成紧密 | AWS IAM, ALB, CloudWatch 集成深度高 | Active Directory, Azure DevOps 集成好 |
### 多云部署策略
随着企业业务的扩展单一云平台可能无法满足所有需求多云部署成为趋势
#### 1. 跨云灾备Active-Passive
主要业务运行在一个云 AWS数据实时复制到另一个云如阿里云当主云发生故障时流量切换到备云
* **优点**: 架构相对简单数据一致性好控制
* **缺点**: 资源闲置浪费切换可能有 RTO
#### 2. 多活部署Active-Active
业务同时在多个云上运行通过全局流量管理DNS/GSLB分发流量
* **优点**: 高可用就近接入提升用户体验
* **缺点**: 数据同步复杂跨云网络延迟问题
#### 3. 混合云Hybrid Cloud
核心数据和敏感业务保留在私有云IDC弹性业务或前端业务部署在公有云
* **工具**: Google Anthos, AWS Outposts, Azure Arc 都是为了解决混合云统一管理而生
### 建议
* **技术选型**: 尽量使用标准的 Kubernetes API避免过度依赖特定云厂商的 CRD 或专有服务以保持应用的可移植性
* **IaC 管理**: 使用 Terraform Pulumi 等工具统一管理多云基础设施

View File

@@ -0,0 +1,13 @@
## 本章小结
本章介绍了公有云服务对 Docker 的积极支持以及新出现的容器云平台
事实上Docker 技术的出现自身就极大推动了云计算行业的发展
通过整合公有云的虚拟机和 Docker 方式可能获得更多的好处包括
* 更快速的持续交付和部署能力
* 利用内核级虚拟化对公有云中服务器资源进行更加高效地利用
* 利用公有云和 Docker 的特性更加方便的迁移和扩展应用
同时容器将作为与虚拟机类似的业务直接提供给用户使用极大的丰富了应用开发和部署的场景

View File

@@ -0,0 +1,13 @@
## 腾讯云
腾讯云 示意图如下
![腾讯云](../_images/qcloud-logo.jpg)
[腾讯云](https://cloud.tencent.com/act/cps/redirect?redirect=1040\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console) 在架构方面经过多年积累,并且有着多年对海量互联网服务的经验。不管是社交、游戏还是其他领域,都有多年的成熟产品来提供产品服务。腾讯在云端完成重要部署,为开发者及企业提供云服务、云数据、云运营等整体一站式服务方案。
具体包括 [云服务器](https://cloud.tencent.com/act/cps/redirect?redirect=1001\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console)、[云存储](https://cloud.tencent.com/act/cps/redirect?redirect=1020\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console)、[云数据库](https://cloud.tencent.com/act/cps/redirect?redirect=1003\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console)、[视频与CDN](https://cloud.tencent.com/act/cps/redirect?redirect=1019\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console) 和 [域名注册](https://dnspod.cloud.tencent.com) 等基础云服务腾讯云分析MTA、腾讯云推送信鸽等腾讯整体大数据能力以及 QQ互联、QQ 空间、微云、微社区等云端链接社交体系。这些正是腾讯云可以提供给这个行业的差异化优势,造就了可支持各种互联网使用场景的高品质的腾讯云技术平台。
[腾讯云容器服务 TKE](https://cloud.tencent.com/act/cps/redirect?redirect=10058\&cps_key=3a5255852d5db99dcd5da4c72f05df61) 是高度可扩展的高性能容器管理服务,用户可以在托管的云服务器实例集群上轻松运行应用程序。使用该服务,将无需安装、运维、扩展用户的集群管理基础设施,只需进行简单的 API 调用,便可启动和停止 Docker 应用程序,查询集群的完整状态,以及使用各种云服务。用户可以根据用户的资源需求和可用性要求在用户的集群中安排容器的置放,满足业务或应用程序的特定要求。
![](https://mc.qcloudimg.com/static/img/0581dbeb97c869bbe6e62025dbc592d7/image.png)

View File

@@ -0,0 +1,7 @@
# Fedora CoreOS
`CoreOS` 是一个专门为安全和大规模运行容器化工作负载而构建的新 Fedora 版本它继承了 Fedora Atomic Host CoreOS Container Linux 的优势
`CoreOS` 的安装文件和运行依赖非常小它提供了精简的 Linux 系统它使用 Linux 容器在更高的抽象层来管理你的服务而不是通过常规的包管理工具 `yum` `apt` 来安装包
同时`CoreOS` 几乎可以运行在任何平台`VirtualBox` `Amazon EC2` `QEMU/KVM` `VMware` `Bare Metal` `OpenStack`

View File

@@ -0,0 +1,7 @@
variant: fcos
version: 1.0.0
passwd:
users:
- name: core
ssh_authorized_keys:
- ssh-rsa AAAA...

View File

@@ -0,0 +1,57 @@
## 安装 Fedora CoreOS
### 下载 ISO
[下载页面](https://getfedora.org/coreos/download/) `Bare Metal & Virtualized` 标签页下载 ISO。
### 编写 FCC
FCC Fedora CoreOS Configuration Fedora CoreOS 配置的简称
```yaml
## example.fcc
variant: fcos
version: 1.0.0
passwd:
users:
- name: core
ssh_authorized_keys:
- ssh-rsa AAAA...
```
`ssh-rsa AAAA...` 替换为自己的 SSH 公钥位于 `~/.ssh/id_rsa.pub`
### 转换 FCC Ignition
运行以下命令
```bash
$ docker run -i --rm quay.io/coreos/fcct:v0.5.0 --pretty --strict < example.fcc > example.ign
```
### 挂载 ISO 启动虚拟机并安装
> 虚拟机需要分配 3GB 以上内存否则会无法启动
在虚拟机终端执行以下命令安装
```bash
$ sudo coreos-installer install /dev/sda --ignition-file example.ign
```
安装之后重新启动即可使用
### 使用
运行以下命令
```bash
$ ssh core@虚拟机IP
$ docker --version
```
### 参考链接
* [官方文档](https://docs.fedoraproject.org/en-US/fedora-coreos/bare-metal/)

View File

@@ -0,0 +1,28 @@
## Fedora CoreOS 介绍
[Fedora CoreOS](https://getfedora.org/coreos/) 是一个自动更新的,最小的,整体的,以容器为中心的操作系统,不仅适用于集群,而且可独立运行,并针对运行 Kubernetes 进行了优化。它旨在结合 CoreOS Container Linux 和 Fedora Atomic Host 的优点,将 Container Linux 中的 [Ignition](https://github.com/coreos/ignition) 与 [rpm-ostree](https://github.com/coreos/rpm-ostree) 和 Project Atomic 中的 SELinux 强化等技术相集成。其目标是提供最佳的容器主机,以安全,大规模地运行容器化的工作负载。
### FCOS 特性
#### 一个最小化操作系统
FCOS 被设计成一个基于容器的最小化的现代操作系统它比现有的 Linux 安装平均节省 40% RAM大约 114M 并允许从 PXE iPXE 非常快速的启动
#### 系统初始化
Ignition 是一种配置实用程序可读取配置文件JSON 格式并根据该配置配置 FCOS 系统可配置的组件包括存储文件系统systemd 和用户
Ignition 在系统首次启动期间 initramfs 仅运行一次由于 Ignition 在启动过程中的早期运行因此它可以在用户空间开始启动之前重新对磁盘分区格式化文件系统创建用户并写入文件 systemd 启动时systemd 服务已被写入磁盘从而加快了启动时间
#### 自动更新
FCOS 使用 rpm-ostree 系统进行事务性升级无需像 yum 升级那样升级单个软件包而是 rpm-ostree OS 升级作为一个原子单元进行新的 OS 部署在升级期间进行并在下次重新引导时生效如果升级出现问题则一次回滚和重新启动会使系统返回到先前的状态确保了系统升级对群集容量的影响降到最小
#### 容器工具
对于诸如构建复制和其他管理容器的任务FCOS 用一组容器工具代替了 **Docker CLI****podman CLI**工具支持许多容器运行时功能例如运行启动停止列出和删除容器和镜像**skopeo CLI**工具可以复制认证和签名镜像您还可以使用**crictl CLI** 工具来处理 CRI-O 容器引擎中的容器和镜像
### 参考文档
* [官方文档](https://docs.fedoraproject.org/en-US/fedora-coreos/)
* [openshift 官方文档](https://docs.openshift.com/container-platform/4.3/architecture/architecture-rhcos.html)

View File

@@ -0,0 +1,121 @@
# podman
[`podman`](https://github.com/containers/podman) 是一个无守护进程、与 Docker 命令高度兼容的下一代 Linux 容器工具。它由 Red Hat 开发,旨在提供一个更安全的容器运行环境。
## Podman vs Docker
Podman Docker 在设计理念上存在显著差异主要体现在架构和权限模型上
| 特性 | Docker | Podman |
| :--- | :--- | :--- |
| **架构** | C/S 架构依赖守护进程 (`dockerd`) | 无守护进程 (Daemonless) |
| **权限** | 默认需要 root 权限 (虽有 Rootless 模式) | 默认支持 Rootless ( root 用户运行) |
| **生态** | 完整的生态系统 (Compose, Swarm) | 专注单机容器配合 Kubernetes 使用 |
| **镜像构建** | `docker build` | `podman build` `buildah` |
## 安装
Podman 支持多种操作系统安装过程也相对简单
### CentOS / RHEL
运行以下命令
```bash
$ sudo yum -y install podman
```
### macOS
macOS 上需要安装 Podman Desktop 或通过 Homebrew 安装
```bash
$ brew install podman
$ podman machine init
$ podman machine start
```
## 使用
`podman` 的命令行几乎与 `docker` 完全兼容大多数情况下你只需将 `docker` 替换为 `podman` 即可
### 运行容器
运行以下命令
```bash
## $ docker run -d -p 80:80 nginx:alpine
$ podman run -d -p 80:80 nginx:alpine
```
### 列出容器
运行以下命令
```bash
$ podman ps
```
### 构建镜像
运行以下命令
```bash
$ podman build -t myimage .
```
## Pods 的概念
Docker 不同Podman 支持 "Pod" 的概念类似于 Kubernetes Pod允许你在同一个网络命名空间中运行多个容器
```bash
## 创建一个 Pod
$ podman pod create --name mypod -p 8080:80
## 在 Pod 中运行容器
$ podman run -d --pod mypod --name webbing nginx
```
## 迁移到 Podman
如果你习惯使用 `docker` 命令可以简单地设置别名
$ alias docker=podman
```
### 进阶用法
#### Systemd 集成
Podman 可以生成 systemd 单元文件,让容器像普通系统服务一样管理。
```bash
## 创建容器
$ podman run -d --name myweb -p 8080:80 nginx
## 生成 systemd 文件
$ podman generate systemd --name myweb --files --new
## 启用并启动服务
$ systemctl --user enable --now container-myweb.service
```
#### Podman Compose
虽然 Podman 兼容 Docker Compose但在某些场景下你可能需要明确使用 `podman-compose`
```bash
$ pip3 install podman-compose
$ podman-compose up -d
```
### 参考
* [Podman 官方网站](https://podman.io/)
* [Podman GitHub 仓库](https://github.com/containers/podman)