Use a better structure

This commit is contained in:
Baohua Yang
2026-02-09 09:32:05 -08:00
parent fdb879dcf2
commit e669ee0fe8
167 changed files with 2462 additions and 2462 deletions

View File

@@ -1,6 +1,6 @@
# Docker Hub
## Docker Hub
## 什么是 Docker Hub
### 什么是 Docker Hub
[Docker Hub](https://hub.docker.com/) 是 Docker 官方维护的公共镜像仓库,也是全球最大的容器镜像库。
@@ -12,9 +12,9 @@
---
## 核心功能
### 核心功能
### 1. 搜索镜像
#### 1. 搜索镜像
除了网页搜索也可以使用命令行
@@ -26,36 +26,36 @@ centos The official build of CentOS. 7000+ [OK]
> **技巧**始终优先使用 `OFFICIAL` 标记为 `[OK]` 的镜像安全性更有保障
### 2. 拉取镜像
#### 2. 拉取镜像
```bash
$ docker pull nginx:alpine
```
### 3. 推送镜像
#### 3. 推送镜像
需要先登录
```bash
$ docker login
# 输入用户名和密码
## 输入用户名和密码
```
打标签并推送
```bash
# 1. 标记镜像
## 1. 标记镜像
$ docker tag myapp:v1 username/myapp:v1
# 2. 推送
## 2. 推送
$ docker push username/myapp:v1
```
---
## 限制与配额重要
### 限制与配额重要
### 镜像拉取限制 (Rate Limiting)
#### 镜像拉取限制 (Rate Limiting)
2020 11 月起Docker Hub 对匿名和免费用户实施了拉取速率限制
@@ -72,13 +72,13 @@ $ docker push username/myapp:v1
---
## 安全最佳实践
### 安全最佳实践
### 1. 启用 2FA (双因素认证)
#### 1. 启用 2FA (双因素认证)
Account Settings -> Security 中启用 2FA保护账号安全启用后CLI 登录需要使用 **Access Token** 而非密码
### 2. 使用 Access Token
#### 2. 使用 Access Token
不要在脚本或 CI/CD 中直接使用登录密码
1. Docker Hub -> Account Settings -> Security -> Access Tokens 创建 Token
@@ -88,13 +88,13 @@ $ docker push username/myapp:v1
$ docker login -u username -p dckr_pat_xxxxxxx
```
### 3. 关注镜像漏洞
#### 3. 关注镜像漏洞
Docker Hub 会对官方镜像和付费用户的镜像进行安全扫描在镜像标签页可以看到漏洞扫描结果
---
## Webhooks
### Webhooks
当镜像被推送时可以自动触发 HTTP 回调例如通知 CI 系统部署
@@ -103,7 +103,7 @@ Docker Hub 会对官方镜像和付费用户的镜像进行安全扫描。在镜
---
## 自动构建 (Automated Builds)
### 自动构建 (Automated Builds)
> 目前仅限付费用户 (Pro/Team) 使用
@@ -111,7 +111,7 @@ Docker Hub 会对官方镜像和付费用户的镜像进行安全扫描。在镜
---
## 本章小结
### 本章小结
| 功能 | 说明 |
|------|------|
@@ -120,7 +120,7 @@ Docker Hub 会对官方镜像和付费用户的镜像进行安全扫描。在镜
| **安全** | 推荐开启 2FA 并使用 Access Token |
| **自动化** | 支持 Webhooks 和自动构建 |
## 延伸阅读
### 延伸阅读
- [私有仓库](registry.md)搭建自己的 Registry
- [镜像加速器](../install/mirror.md)加速下载
- [私有仓库](6.2_registry.md)搭建自己的 Registry
- [镜像加速器](../install/3.9_mirror.md)加速下载

View File

@@ -1,4 +1,4 @@
# 私有仓库
## 私有仓库
有时候使用 Docker Hub 这样的公共仓库可能不方便用户可以创建一个本地仓库供私人使用
@@ -6,9 +6,9 @@
[`docker-registry`](https://docs.docker.com/registry/) 是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 [`docker-registry`](https://github.com/docker/distribution) v2.x 版本。
## 安装运行 docker-registry
### 安装运行 docker-registry
### 容器运行
#### 容器运行
你可以使用官方 `registry` 镜像来运行
@@ -25,7 +25,7 @@ $ docker run -d \
registry
```
## 在私有仓库上传搜索下载镜像
### 在私有仓库上传搜索下载镜像
创建好私有仓库之后就可以使用 `docker tag` 来标记一个镜像然后推送它到仓库例如私有仓库地址为 `127.0.0.1:5000`
@@ -91,13 +91,13 @@ REPOSITORY TAG IMAGE ID CREAT
127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB
```
## 配置非 https 仓库地址
### 配置非 https 仓库地址
如果你不想使用 `127.0.0.1:5000` 作为仓库地址比如想让本网段的其他主机也能把镜像推送到私有仓库你就得把例如 `192.168.199.100:5000` 这样的内网地址作为私有仓库地址这时你会发现无法成功推送镜像
这是因为 Docker 默认不允许非 `HTTPS` 方式推送镜像我们可以通过 Docker 的配置选项来取消这个限制或者查看下一节配置能够通过 `HTTPS` 访问的私有仓库
### Linux (systemd)
#### Linux (systemd)
对于使用 `systemd` 的系统请在 `/etc/docker/daemon.json` 中写入如下内容如果文件不存在请新建该文件
@@ -115,6 +115,6 @@ REPOSITORY TAG IMAGE ID CREAT
>注意该文件必须符合 `json` 规范否则 Docker 将不能启动
## 其他
### 其他
对于 Docker Desktop for Windows Docker Desktop for Mac 在设置中的 `Docker Engine` 中进行编辑 增加和上边一样的字符串即可

View File

@@ -1,10 +1,10 @@
# 私有仓库高级配置
## 私有仓库高级配置
上一节我们搭建了一个具有基础功能的私有仓库本小节我们来使用 `Docker Compose` 搭建一个拥有权限认证TLS 的私有仓库
新建一个文件夹以下步骤均在该文件夹中进行
## 准备站点证书
### 准备站点证书
如果你拥有一个域名国内各大云服务商均提供免费的站点证书你也可以使用 `openssl` 自行签发证书
@@ -82,7 +82,7 @@ $ openssl x509 -req -days 750 -in "site.csr" -sha256 \
新建 `ssl` 文件夹并将 `docker.domain.com.key` `docker.domain.com.crt` `root-ca.crt` 这三个文件移入删除其他文件
## 配置私有仓库
### 配置私有仓库
私有仓库默认的配置文件位于 `/etc/docker/registry/config.yml`我们先在本地编辑 `config.yml`之后挂载到容器中
@@ -123,7 +123,7 @@ health:
threshold: 3
```
## 生成 http 认证文件
### 生成 http 认证文件
```bash
$ mkdir auth
@@ -136,7 +136,7 @@ $ docker run --rm \
> 将上面的 `username` `password` 替换为你自己的用户名和密码
## 编辑 `docker-compose.yml`
### 编辑 `docker-compose.yml`
```yaml
@@ -154,7 +154,7 @@ volumes:
registry-data:
```
## 修改 hosts
### 修改 hosts
编辑 `/etc/hosts`
@@ -162,7 +162,7 @@ volumes:
127.0.0.1 docker.domain.com
```
## 启动
### 启动
```bash
$ docker compose up -d
@@ -170,7 +170,7 @@ $ docker compose up -d
这样我们就搭建好了一个具有权限认证TLS 的私有仓库接下来我们测试其功能是否正常
## 测试私有仓库功能
### 测试私有仓库功能
由于自行签发的 CA 根证书不被系统信任所以我们需要将 CA 根证书 `ssl/root-ca.crt` 移入 `/etc/docker/certs.d/docker.domain.com` 文件夹中
@@ -212,6 +212,6 @@ no basic auth credentials
发现会提示没有登录不能将镜像推送到私有仓库中
## 注意事项
### 注意事项
如果你本机占用了 `443` 端口你可以配置 [Nginx 代理](https://docs.docker.com/registry/recipes/nginx/),这里不再赘述。

View File

@@ -1,8 +1,8 @@
# Nexus 3
## Nexus 3
使用 Docker 官方的 Registry 创建的仓库面临一些维护问题比如某些镜像删除以后空间默认是不会回收的需要一些命令去回收空间然后重启 Registry在企业中把内部的一些工具包放入 `Nexus` 中是比较常见的做法最新版本 `Nexus3.x` 全面支持 Docker 的私有镜像所以使用 [`Nexus3.x`](https://www.sonatype.com/product/repository-oss-download) 一个软件来管理 `Docker` , `Maven` , `Yum` , `PyPI` 等是一个明智的选择。
## 启动 Nexus 容器
### 启动 Nexus 容器
```bash
$ docker run -d --name nexus3 --restart=always \
@@ -38,7 +38,7 @@ $ docker exec nexus3 cat /nexus-data/admin.password
登录之后可以点击页面上方的齿轮按钮按照下面的方法进行设置
## 创建仓库
### 创建仓库
创建一个私有仓库的方法 `Repository->Repositories` 点击右边菜单 `Create repository` 选择 `docker (hosted)`
@@ -48,7 +48,7 @@ $ docker exec nexus3 cat /nexus-data/admin.password
其它的仓库创建方法请各位自己摸索还可以创建一个 `docker (proxy)` 类型的仓库链接到 DockerHub 再创建一个 `docker (group)` 类型的仓库把刚才的 `hosted` `proxy` 添加在一起主机在访问的时候默认下载私有仓库中的镜像如果没有将链接到 DockerHub 中下载并缓存到 Nexus
## 添加访问权限
### 添加访问权限
菜单 `Security->Realms` Docker Bearer Token Realm 移到右边的框中保存
@@ -56,9 +56,9 @@ $ docker exec nexus3 cat /nexus-data/admin.password
添加用户菜单 `Security->Users`->`Create local user` `Roles` 选项中选中刚才创建的规则移动到右边的窗口保存
## NGINX 加密代理
### NGINX 加密代理
证书的生成请参见 [`私有仓库高级配置`](registry_auth.md) 里面证书生成一节
证书的生成请参见 [`私有仓库高级配置`](6.3_registry_auth.md) 里面证书生成一节
NGINX 示例配置如下
@@ -111,9 +111,9 @@ server {
}
```
## Docker 主机访问镜像仓库
### Docker 主机访问镜像仓库
如果不启用 SSL 加密可以通过 [前面章节](registry.md) 的方法添加非 https 仓库地址到 Docker 的配置文件中然后重启 Docker
如果不启用 SSL 加密可以通过 [前面章节](6.2_registry.md) 的方法添加非 https 仓库地址到 Docker 的配置文件中然后重启 Docker
使用 SSL 加密以后程序需要访问就不能采用修改配置的方式了具体方法如下

View File

@@ -1,4 +1,4 @@
# 访问仓库
# 第六章 访问仓库
仓库`Repository`是集中存放镜像的地方