Add details for cloud images

This commit is contained in:
yeasy
2026-03-09 19:27:38 -07:00
parent 330e084e00
commit 89b0dc4425
5 changed files with 301 additions and 23 deletions

View File

@@ -85,6 +85,53 @@ docker tag my-app:latest ccr.ccs.tencentyun.com/namespace/my-app:latest
docker push ccr.ccs.tencentyun.com/namespace/my-app:latest
```
### 腾讯云 Docker 镜像加速器配置
为了加快镜像拉取速度腾讯云提供了镜像加速服务配置方法如下
#### Linux 系统配置
编辑 `/etc/docker/daemon.json` 文件如果不存在则创建
```bash
# 创建或编辑配置文件
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
```
添加以下内容
```json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
],
"insecure-registries": []
}
```
重启 Docker 服务
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker
```
验证配置
```bash
# 查看镜像源是否生效
docker info | grep -A 5 "Registry Mirrors"
```
#### Windows/Mac 配置
对于 Docker Desktop在设置界面中
1. 打开 Docker Desktop 设置
2. 导航到 "Docker Engine"
3. JSON 配置中添加上述 `registry-mirrors` 字段
4. 点击 "Apply & Restart"
### 腾讯云容器镜像服务 (TCR)
腾讯云容器镜像服务 (TCR) 提供企业级容器镜像存储和分发能力
@@ -102,3 +149,65 @@ docker push ccr.ccs.tencentyun.com/namespace/my-app:latest
3. 配置 Docker 登录凭证
4. 本地构建镜像并推送到 TCR
5. TKE 集群部署时引用 TCR 镜像地址
#### 完整推送/拉取示例
```bash
# 登录到腾讯云 TCR使用 API 密钥)
docker login ccr.ccs.tencentyun.com \
--username <腾讯云账号ID> \
--password <API_KEY>
# 拉取公开镜像
docker pull ccr.ccs.tencentyun.com/library/nginx:latest
# 构建本地镜像
docker build -t my-app:v1.0 .
# 标记镜像为 TCR 地址
docker tag my-app:v1.0 \
ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
# 推送镜像到 TCR
docker push ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
# 在 Dockerfile 中使用 TCR 镜像
FROM ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
RUN echo "使用腾讯云镜像作为基础镜像"
```
#### TKE 集群中使用 TCR 镜像
配置镜像拉取凭证后 Deployment 中直接引用 TCR 镜像
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
imagePullSecrets:
- name: tcr-secret # 需提前创建该 Secret
containers:
- name: my-app
image: ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
ports:
- containerPort: 8080
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
```

View File

@@ -100,6 +100,61 @@ kubectl apply -f service.yaml
kubectl get svc web-service
```
### 阿里云 Docker 镜像加速器配置
为了加快从阿里云镜像源拉取官方镜像的速度可以配置镜像加速器阿里云为容器服务 ACK 用户提供了免费的镜像加速服务
#### 获取加速器地址
登录阿里云容器镜像服务控制台 "镜像工具" > "镜像加速器" 中可获取个人的加速器地址类似于 `https://xxxxxx.mirror.aliyuncs.com`
#### Linux 系统配置
编辑或创建 `/etc/docker/daemon.json` 文件
```bash
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
```
添加或修改以下内容替换为你的加速器地址
```json
{
"registry-mirrors": [
"https://xxxxxx.mirror.aliyuncs.com"
]
}
```
重新加载并重启 Docker
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker
```
验证配置生效
```bash
docker info | grep -A 5 "Registry Mirrors"
```
#### Windows/Mac 配置
Docker Desktop Settings
1. 进入 "Docker Engine" 标签
2. 编辑 JSON 配置添加 `registry-mirrors` 字段
3. 点击 "Apply & Restart"
#### 测试加速效果
```bash
# 从加速器拉取镜像(速度应该明显提升)
docker pull nginx:latest
time docker pull alpine:latest
```
### 阿里云容器镜像服务 (ACR)
阿里云容器镜像服务 (ACR, Container Registry) 是企业级的容器镜像存储和分发平台
@@ -111,25 +166,105 @@ kubectl get svc web-service
- **集成 ACK** ACK 无缝集成自动身份认证
- **镜像版本管理**标签管理镜像过期清理保留策略
#### 使用示例
#### 完整推送/拉取示例
```bash
# 登录阿里云镜像服务
docker login registry.cn-hangzhou.aliyuncs.com -u <username>
# 登录阿里云镜像仓库(使用 Docker 登录)
# 使用阿里云账户 ID 和 RAM 访问密钥或密码
docker login registry.cn-hangzhou.aliyuncs.com \
--username=<阿里云账户ID>
# 标记镜像
docker tag my-app:latest registry.cn-hangzhou.aliyuncs.com/myapp/my-app:v1.0
# 拉取阿里云公开镜像
docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx:latest
# 推送镜像
# 构建本地镜像
docker build -t my-app:v1.0 .
# 标记镜像为阿里云仓库地址
docker tag my-app:v1.0 \
registry.cn-hangzhou.aliyuncs.com/myapp/my-app:v1.0
# 推送镜像到阿里云 ACR
docker push registry.cn-hangzhou.aliyuncs.com/myapp/my-app:v1.0
# 在 ACK 集群使用镜像
kubectl set image deployment/web-server web=registry.cn-hangzhou.aliyuncs.com/myapp/web:v2.0
# 在 Dockerfile 中使用 ACR 镜像
FROM registry.cn-hangzhou.aliyuncs.com/myapp/my-app:v1.0
COPY . /app
RUN echo "已成功使用阿里云镜像"
```
#### ACK 集群中使用 ACR 镜像
ACK 集群中需要先配置镜像拉取凭证Secret然后在 Deployment 中引用
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-server
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
# 如果是私有镜像,需配置镜像拉取凭证
imagePullSecrets:
- name: acr-secret
containers:
- name: web
image: registry.cn-hangzhou.aliyuncs.com/myapp/web:v2.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
affinity:
# 配置 Pod 反亲和性,分散到不同节点
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- web
topologyKey: kubernetes.io/hostname
```
#### 创建镜像拉取凭证
ACK 集群中创建 Secret用于拉取私有镜像
```bash
# 创建镜像拉取 Secret
kubectl create secret docker-registry acr-secret \
--docker-server=registry.cn-hangzhou.aliyuncs.com \
--docker-username=<阿里云账户ID> \
--docker-password=<RAM访问密钥或密码> \
--docker-email=<邮箱地址>
# 查看创建的 Secret
kubectl get secret acr-secret
kubectl describe secret acr-secret
```
#### ACR 优势
- ACK 集群中无需额外配置认证自动使用 ACR 镜像
- 支持 Helm Chart 存储和版本管理
- 提供图形化镜像仓库管理界面
- ACK 集群中与镜像仓库无缝集成简化身份认证
- 支持 Helm Chart 存储和版本管理方便应用交付
- 提供完整的图形化镜像仓库管理界面
- 完整的审计日志和操作追踪功能
- 支持镜像自动扫描和漏洞报告

View File

@@ -4,15 +4,37 @@
本章将介绍 Docker 在不同操作系统镜像场景下的实战案例当你构建容器化应用时选择合适的基础镜像至关重要不同的操作系统镜像在大小功能和性能方面各有特点适用于不同的使用场景本章通过具体的案例详细讲解如何在 Docker 中使用主流操作系统镜像包括轻量级镜像 (BusyboxAlpine) 和完整功能镜像 (DebianUbuntuCentOS )
## 为什么选择合适的操作系统镜像很重要
在容器化应用开发中选择合适的基础操作系统镜像直接影响容器的大小启动速度安全性和运行性能不同的镜像提供了不同的功能集和资源占用
- **轻量级镜像** (BusyboxAlpine) - 镜像大小仅几 MB启动快速适合微服务IoT 设备和对资源敏感的环境Busybox 是最小的选择集成了常见的 Unix 工具Alpine 则提供了完整的包管理器方便安装额外工具
- **通用镜像** (DebianUbuntu) - 提供完整的 Linux 功能和丰富的软件生态镜像大小通常在 100-300 MB 之间适合需要灵活安装各种依赖和工具的应用场景
- **企业级镜像** (CentOSFedora) - 基于 Red Hat 生态广泛应用于企业环境和复杂系统应用提供了 yum 包管理器和强大的系统管理工具
选择镜像的关键原则是 "小而够用"选择满足应用需求的最小镜像这样可以减少安全漏洞表面积加快镜像拉取和推送速度降低存储成本同时也使容器更便于分发和部署
## 常用操作系统镜像对比
| 镜像 | 大小 | 包管理器 | 适用场景 | 优势 |
|------|------|--------|--------|------|
| **Busybox** | ~1 MB | | 最小化工具集initrd | 极致轻量启动秒级 |
| **Alpine** | ~5 MB | apk | 微服务静态应用 | 体积小有包管理器 |
| **Debian** | ~100 MB | apt-get | 通用应用开发环境 | 软件包丰富稳定性强 |
| **Ubuntu** | ~80 MB | apt-get | 类似 Debian现代化系统 | 更新频繁用户多 |
| **CentOS** | ~200 MB | yum | 企业应用兼容性需求 | 企业级支持稳定性高 |
| **Fedora** | ~200 MB | dnf | 新特性需求开发环境 | 最新技术栈创新性强 |
## 学习目标
通过学习本章内容你将能够
- 理解不同操作系统镜像的特点和适用场景
- 掌握在 Docker 中使用各类操作系统镜像的方法
- 学习如何根据实际需求选择合适的基础镜像
- 了解如何在容器中安装和配置应用程序
- 掌握镜像优化和大小控制的最佳实践
- 理解不同操作系统镜像的特点大小和适用场景
- 掌握在 Docker 中使用各类操作系统镜像的方法和最佳实践
- 学习如何根据实际需求选择合适的基础镜像实现镜像优化
- 了解如何在不同操作系统容器中安装配置和管理应用程序
- 掌握多阶段构建等高级技巧最小化最终镜像大小
- 学会使用 Docker Compose 编排多个操作系统容器环境
## 章节内容导航

View File

@@ -8,16 +8,28 @@ DevOps 是一种重要的开发和运维文化,强调开发团队和运维团
Docker DevOps 工作流中承担多个关键角色首先它标准化了应用的开发和部署环境使得团队成员在相同的 Docker 容器中工作避免了"在我的机器上可以运行"的问题其次Docker CI/CD 流程无缝集成通过自动化的镜像构建测试和部署实现快速的迭代周期此外Docker 还支持微服务架构和容器编排使团队能够更灵活地扩展应用和管理基础设施
## CI/CD 管道的重要性
持续集成与持续部署 (CI/CD) 是现代 DevOps 的核心通过自动化的代码检测测试构建和部署流程团队可以更加频繁地发布新版本同时保持系统的稳定性和可靠性Docker CI/CD 中扮演了重要角色
- **标准化构建环境** - Docker 确保开发测试和生产环境完全一致消除了环境差异带来的问题
- **加速流水线** - 容器的快速启动和轻量级特性大幅加快了 CI/CD 流程的执行效率
- **灵活的测试框架** - 可以轻松创建短生命周期的测试容器并行运行多个测试
- **自动化镜像发布** - CI/CD 工具可以自动构建扫描标记和推送 Docker 镜像到仓库
- **蓝绿部署和金丝雀发布** - 利用容器的隔离性和可重复性实现高级发布策略
本章将通过介绍 GitHub ActionsDrone 等流行的 CI/CD 工具展示如何在实际项目中构建完整的自动化流水线我们还将演示如何在本地开发环境中集成 Docker使用 IDE 的容器开发插件加快本地迭代周期
## 本章学习目标
通过学习本章内容你将能够
- 理解 DevOps 的核心原则和 Docker 的作用
- 掌握完整的 Docker 工作流从代码提交到线上部署
- 学习如何使用 GitHub Actions 实现自动化 CI/CD
- 了解 Drone 等第三方 CI/CD 工具的集成方式
- 学会在本地 IDE 中集成 Docker提升开发效率
- 掌握实战中常见的 DevOps 场景和最佳实践
- 理解 DevOps 文化CI/CD 流程和容器化的紧密关系
- 掌握完整的 Docker 工作流从代码提交到线上部署的每一个环节
- 学习如何使用 GitHub Actions 实现自动化 CI/CD以及工作流的编写和优化
- 了解 Drone 等第三方 CI/CD 工具的架构部署和配置方式
- 学会在本地 IDE (VS Code) 中集成 Docker利用容器开发工具提升开发效率
- 掌握实战中常见的 DevOps 场景最佳实践和故障排查方法
## 章节内容导航

View File

@@ -2,7 +2,7 @@
[![](https://img.shields.io/github/stars/yeasy/docker_practice.svg?style=social&label=Stars)](https://github.com/yeasy/docker_practice) [![图](https://img.shields.io/github/release/yeasy/docker_practice/all.svg)](https://github.com/yeasy/docker_practice/releases) [![图](https://img.shields.io/badge/Based-Docker%20Engine%20v29.x-blue.svg)](https://docs.docker.com/engine/release-notes/) [![图](https://img.shields.io/badge/Docker%20%E6%8A%80%E6%9C%AF%E5%85%A5%E9%97%A8%E4%B8%8E%E5%AE%9E%E6%88%98-jd.com-red.svg)][1]
**v1.6.3**
**v1.6.4**
[Docker](https://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker可以让应用的部署、测试和分发都变得前所未有的高效和轻松