mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 11:54:37 +00:00
Fix and update
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
## 容器与云计算
|
||||
# 容器与云计算
|
||||
|
||||
Docker 目前已经得到了众多公有云平台的支持,并成为除虚拟机之外的核心云业务。
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 阿里云
|
||||
|
||||
阿里云 示意图如下:
|
||||
|
||||

|
||||
|
||||
[阿里云](https://www.aliyun.com/?source=5176.11533457\&userCode=8lx5zmtu\&type=copy) 创立于 2009 年,是中国较早的云计算平台。阿里云致力于提供安全、可靠的计算和数据处理能力。
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 亚马逊云
|
||||
|
||||
亚马逊云 示意图如下:
|
||||
|
||||

|
||||
|
||||
[AWS](https://www.amazonaws.cn),即 Amazon Web Services,是亚马逊(Amazon)公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务,使用户几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT 投入成本和维护成本。
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
随着容器技术的普及,目前主流的云计算服务商都提供了成熟的容器服务。与容器相关的云计算服务主要分为以下几种类型:
|
||||
|
||||
### 1. 容器编排托管服务 (Managed K8s)
|
||||
### 1. 容器编排托管服务(Managed K8s)
|
||||
|
||||
这是目前最主流的形式。云厂商托管 Kubernetes 的控制平面(Master节点),用户只需管理工作节点(Worker Node)。
|
||||
* **优势**:降低了 Kubernetes 集群的维护成本,高可用性由厂商保证。
|
||||
* **典型服务**:AWS EKS, Azure AKS, Google GKE, 阿里云 ACK, 腾讯云 TKE。
|
||||
|
||||
### 2. 容器实例服务 (Serverless Containers)
|
||||
### 2. 容器实例服务(Serverless Containers)
|
||||
|
||||
这一类服务通常被称为 CaaS (Container as a Service)。用户无需管理底层服务器(EC2/CVM),只需提供镜像和配置即可运行容器。
|
||||
* **优势**:极致的弹性,按秒计费,零运维。
|
||||
* **典型服务**:AWS Fargate, Azure Container Instances, Google Cloud Run, 阿里云 ECI。
|
||||
|
||||
### 3. 镜像仓库服务 (Container Registry)
|
||||
### 3. 镜像仓库服务(Container Registry)
|
||||
|
||||
提供安全、可靠的私有 Docker 镜像存储服务,通常与云厂商的 CI/CD 流水线深度集成。
|
||||
* **典型服务**:AWS ECR, Azure ACR, Google GCR/GAR, 阿里云 ACR。
|
||||
|
||||
@@ -14,21 +14,23 @@
|
||||
|
||||
### 多云部署策略
|
||||
|
||||
#### 1. 跨云灾备 (Active-Passive)
|
||||
随着企业业务的扩展,单一云平台可能无法满足所有需求,多云部署成为趋势。
|
||||
|
||||
#### 1. 跨云灾备(Active-Passive)
|
||||
|
||||
主要业务运行在一个云(如 AWS),数据实时复制到另一个云(如阿里云)。当主云发生故障时,流量切换到备云。
|
||||
|
||||
* **优点**: 架构相对简单,数据一致性好控制。
|
||||
* **缺点**: 资源闲置浪费,切换可能有 RTO。
|
||||
|
||||
#### 2. 多活部署 (Active-Active)
|
||||
#### 2. 多活部署(Active-Active)
|
||||
|
||||
业务同时在多个云上运行,通过全局流量管理(DNS/GSLB)分发流量。
|
||||
|
||||
* **优点**: 高可用,就近接入提升用户体验。
|
||||
* **缺点**: 数据同步复杂,跨云网络延迟问题。
|
||||
|
||||
#### 3. 混合云 (Hybrid Cloud)
|
||||
#### 3. 混合云(Hybrid Cloud)
|
||||
|
||||
核心数据和敏感业务保留在私有云(IDC),弹性业务或前端业务部署在公有云。
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 腾讯云
|
||||
|
||||
腾讯云 示意图如下:
|
||||
|
||||

|
||||
|
||||
[腾讯云](https://cloud.tencent.com/act/cps/redirect?redirect=1040\&cps_key=3a5255852d5db99dcd5da4c72f05df61\&from=console) 在架构方面经过多年积累,并且有着多年对海量互联网服务的经验。不管是社交、游戏还是其他领域,都有多年的成熟产品来提供产品服务。腾讯在云端完成重要部署,为开发者及企业提供云服务、云数据、云运营等整体一站式服务方案。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Fedora CoreOS
|
||||
# Fedora CoreOS
|
||||
|
||||
`CoreOS` 是一个专门为安全和大规模运行容器化工作负载而构建的新 Fedora 版本,它继承了 Fedora Atomic Host 和 CoreOS Container Linux 的优势。
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ FCC 是 Fedora CoreOS Configuration (Fedora CoreOS 配置)的简称。
|
||||
|
||||
```yaml
|
||||
## example.fcc
|
||||
|
||||
variant: fcos
|
||||
version: 1.0.0
|
||||
passwd:
|
||||
@@ -23,6 +24,8 @@ passwd:
|
||||
|
||||
### 转换 FCC 为 Ignition
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker run -i --rm quay.io/coreos/fcct:v0.5.0 --pretty --strict < example.fcc > example.ign
|
||||
```
|
||||
@@ -41,6 +44,8 @@ $ sudo coreos-installer install /dev/sda --ignition-file example.ign
|
||||
|
||||
### 使用
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ ssh core@虚拟机IP
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ FCOS 使用 rpm-ostree 系统进行事务性升级。无需像 yum 升级那样
|
||||
|
||||
#### 容器工具
|
||||
|
||||
对于诸如构建,复制和其他管理容器的任务,FCOS 用一组容器工具代替了 **Docker CLI**。**podman CLI** 工具支持许多容器运行时功能,例如运行,启动,停止,列出和删除容器和镜像。**skopeo CLI** 工具可以复制,认证和签名镜像。您还可以使用 **crictl CLI** 工具来处理 CRI-O 容器引擎中的容器和镜像。
|
||||
对于诸如构建,复制和其他管理容器的任务,FCOS 用一组容器工具代替了 **Docker CLI**。**podman CLI**工具支持许多容器运行时功能,例如运行,启动,停止,列出和删除容器和镜像。**skopeo CLI**工具可以复制,认证和签名镜像。您还可以使用**crictl CLI** 工具来处理 CRI-O 容器引擎中的容器和镜像。
|
||||
|
||||
### 参考文档
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
## podman
|
||||
# podman
|
||||
|
||||
[`podman`](https://github.com/containers/podman) 是一个无守护进程、与 Docker 命令高度兼容的下一代 Linux 容器工具。它由 Red Hat 开发,旨在提供一个更安全的容器运行环境。
|
||||
|
||||
### Podman vs Docker
|
||||
## Podman vs Docker
|
||||
|
||||
Podman 和 Docker 在设计理念上存在显著差异,主要体现在架构和权限模型上。
|
||||
|
||||
| 特性 | Docker | Podman |
|
||||
| :--- | :--- | :--- |
|
||||
@@ -11,15 +13,19 @@
|
||||
| **生态** | 完整的生态系统 (Compose, Swarm) | 专注单机容器,配合 Kubernetes 使用 |
|
||||
| **镜像构建** | `docker build` | `podman build` 或 `buildah` |
|
||||
|
||||
### 安装
|
||||
## 安装
|
||||
|
||||
#### CentOS / RHEL
|
||||
Podman 支持多种操作系统,安装过程也相对简单。
|
||||
|
||||
### CentOS / RHEL
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ sudo yum -y install podman
|
||||
```
|
||||
|
||||
#### macOS
|
||||
### macOS
|
||||
|
||||
macOS 上需要安装 Podman Desktop 或通过 Homebrew 安装:
|
||||
|
||||
@@ -29,11 +35,13 @@ $ podman machine init
|
||||
$ podman machine start
|
||||
```
|
||||
|
||||
### 使用
|
||||
## 使用
|
||||
|
||||
`podman` 的命令行几乎与 `docker` 完全兼容,大多数情况下,你只需将 `docker` 替换为 `podman` 即可。
|
||||
|
||||
#### 运行容器
|
||||
### 运行容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## $ docker run -d -p 80:80 nginx:alpine
|
||||
@@ -41,31 +49,37 @@ $ podman machine start
|
||||
$ podman run -d -p 80:80 nginx:alpine
|
||||
```
|
||||
|
||||
#### 列出容器
|
||||
### 列出容器
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ podman ps
|
||||
```
|
||||
|
||||
#### 构建镜像
|
||||
### 构建镜像
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ podman build -t myimage .
|
||||
```
|
||||
|
||||
### Pods 的概念
|
||||
## 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
|
||||
## 迁移到 Podman
|
||||
|
||||
如果你习惯使用 `docker` 命令,可以简单地设置别名:
|
||||
|
||||
@@ -80,12 +94,15 @@ 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
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user