mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
Add details for cloud images
This commit is contained in:
@@ -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"
|
||||
```
|
||||
|
||||
@@ -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 存储和版本管理,方便应用交付
|
||||
- 提供完整的图形化镜像仓库管理界面
|
||||
- 完整的审计日志和操作追踪功能
|
||||
- 支持镜像自动扫描和漏洞报告
|
||||
|
||||
Reference in New Issue
Block a user