Fix and update

This commit is contained in:
baohua
2026-02-09 11:34:35 -08:00
parent e669ee0fe8
commit 63377d0431
136 changed files with 2146 additions and 262 deletions

View File

@@ -1,5 +1,9 @@
## Docker Registry
## Docker Registry
Docker Registry 是镜像分发和管理的核心组件本节将介绍 Registry 的基本概念公共和私有服务的选择以及镜像的安全管理
### 一句话理解 Registry
> **Docker Registry 是存储和分发 Docker 镜像的服务类似于代码的 GitHub 或包管理的 npm**
@@ -10,6 +14,14 @@
#### Registry仓库标签的关系
### 核心概念
要熟练使用 Docker Registry首先需要理清它与仓库Repository标签Tag之间的关系
#### Registry仓库标签的关系
Docker Registry 中可以包含多个 Repository每个 Repository 可以包含多个 Tag下图清晰地展示了它们之间的层级关系
```
┌─────────────────────────────────────────────────────────────────────┐
│ Docker Registry │
@@ -39,6 +51,10 @@
#### 镜像的完整名称
#### 镜像的完整名称
一个完整的 Docker 镜像名称由 Registry 地址用户名/组织名仓库名和标签组成了解其结构有助于我们更准确地定位镜像
```
[registry地址/][用户名/]仓库名[:标签]
```
@@ -47,6 +63,7 @@
```bash
## 完整格式
registry.example.com/mycompany/myapp:v1.2.3
│ │ │ │
│ │ │ └── 标签
@@ -55,13 +72,16 @@ registry.example.com/mycompany/myapp:v1.2.3
└── Registry 地址
## Docker Hub 官方镜像(省略 registry 和用户名)
nginx:1.25
ubuntu:24.04
## Docker Hub 用户镜像
jwilder/nginx-proxy:latest
## 其他 Registry
ghcr.io/username/myapp:v1.0
gcr.io/google-containers/pause:3.6
```
@@ -70,6 +90,10 @@ gcr.io/google-containers/pause:3.6
### 公共 Registry 服务
### 公共 Registry 服务
公共 Registry 服务为开发者提供了便捷的镜像获取途径其中最著名的是 Docker Hub
#### Docker Hub默认
[Docker Hub](https://hub.docker.com/) 是最大的公共 Registry也是 Docker 的默认 Registry。
@@ -81,10 +105,12 @@ gcr.io/google-containers/pause:3.6
```bash
## 从 Docker Hub 拉取镜像
$ docker pull nginx # 官方镜像
$ docker pull bitnami/redis # 第三方镜像
## 推送镜像到 Docker Hub
$ docker login
$ docker push username/myapp:v1.0
```
@@ -118,7 +144,9 @@ $ docker push username/myapp:v1.0
### 私有 Registry
对于企业用户通常需要搭建私有 Registry 来存储内部镜像
出于安全和隐私的考虑企业往往需要搭建自己的私有 Registry以下是几种常见的搭建方案
#### 官方 Registry 镜像
#### 官方 Registry 镜像
@@ -126,13 +154,16 @@ Docker 官方提供了 [registry](https://hub.docker.com/_/registry/) 镜像,
```bash
## 启动一个本地 Registry
$ docker run -d -p 5000:5000 --name registry registry:2
## 推送镜像到本地 Registry
$ docker tag myapp:v1.0 localhost:5000/myapp:v1.0
$ docker push localhost:5000/myapp:v1.0
## 从本地 Registry 拉取
$ docker pull localhost:5000/myapp:v1.0
```
@@ -155,6 +186,14 @@ $ docker pull localhost:5000/myapp:v1.0
#### 完整工作流程
### 镜像的推送和拉取
掌握镜像的推送Push和拉取Pull是使用 Docker Registry 的基本功
#### 完整工作流程
下图展示了从开发环境构建镜像推送到 Registry再到生产环境拉取运行的完整流程
```
开发者机器 Registry 生产服务器
│ │ │
@@ -173,37 +212,50 @@ $ docker pull localhost:5000/myapp:v1.0
#### 常用命令
运行以下命令
```bash
## 登录 Registry
$ docker login # 登录 Docker Hub
$ docker login registry.example.com # 登录其他 Registry
## 拉取镜像
$ docker pull nginx:1.25
## 标记镜像(准备推送)
$ docker tag myapp:latest registry.example.com/myteam/myapp:v1.0
## 推送镜像
$ docker push registry.example.com/myteam/myapp:v1.0
## 登出
$ docker logout
```
### 镜像的安全性
### 镜像的安全性
在使用公共镜像或维护私有镜像时安全性是不容忽视的重要环节
#### 使用官方镜像
Docker Hub [官方镜像](https://hub.docker.com/search?q=&type=image&image_filter=official)(标有 "Official Image" 标识)经过 Docker 团队审核,相对更安全。
```bash
## 官方镜像示例
nginx # ✅ 官方
mysql # ✅ 官方
redis # ✅ 官方
## 第三方镜像(需要自行评估可信度)
bitnami/redis # ⚠️ 需要评估
someuser/myapp # ⚠️ 需要评估
```
@@ -214,19 +266,25 @@ someuser/myapp # ⚠️ 需要评估
```bash
## 启用镜像签名验证
$ export DOCKER_CONTENT_TRUST=1
## 此后的 pull/push 会验证签名
$ docker pull nginx:latest
```
#### 漏洞扫描
运行以下命令
```bash
## 使用 Docker Scout 扫描镜像漏洞
$ docker scout cves nginx:latest
## 使用 Trivy开源工具
$ trivy image nginx:latest
```