mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
style: apply global formatting fixes (struct, spacing, zhlint)
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
## 6.1 Docker Hub
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 什么是 Docker Hub
|
||||
|
||||
Docker Hub 是 Docker 的中央镜像仓库,通过它您可以轻松地分享和获取 Docker 镜像。
|
||||
@@ -8,16 +10,18 @@ Docker Hub 是 Docker 的中央镜像仓库,通过它您可以轻松地分享
|
||||
[Docker Hub](https://hub.docker.com/) 是 Docker 官方维护的公共镜像仓库,也是全球最大的容器镜像库。
|
||||
|
||||
它提供了:
|
||||
- **官方镜像**:由 Docker 官方和软件厂商(如 Nginx, MySQL, Node.js)维护的高质量镜像。
|
||||
- **官方镜像**:由 Docker 官方和软件厂商 (如 Nginx,MySQL,Node.js) 维护的高质量镜像。
|
||||
- **个人/组织仓库**:用户可以上传自己的镜像。
|
||||
- **自动构建**:与 GitHub/Bitbucket 集成(需付费)。
|
||||
- **自动构建**:与 GitHub/Bitbucket 集成 (需付费)。
|
||||
- **Webhooks**:镜像更新时触发回调。
|
||||
|
||||
---
|
||||
|
||||
### 核心功能
|
||||
|
||||
#### 1. 搜索镜像
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 1。搜索镜像
|
||||
|
||||
我们可以通过 `docker search` 命令来查找官方仓库中的镜像,并利用 `docker pull` 命令来将它下载到本地。
|
||||
|
||||
@@ -32,7 +36,7 @@ centos The official build of CentOS. 7000+ [OK]
|
||||
|
||||
> **技巧**:始终优先使用 `OFFICIAL` 标记为 `[OK]` 的镜像,安全性更有保障。
|
||||
|
||||
#### 2. 拉取镜像
|
||||
#### 2。拉取镜像
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -40,7 +44,7 @@ centos The official build of CentOS. 7000+ [OK]
|
||||
$ docker pull nginx:alpine
|
||||
```
|
||||
|
||||
#### 3. 推送镜像
|
||||
#### 3。推送镜像
|
||||
|
||||
需要先登录:
|
||||
|
||||
@@ -67,6 +71,12 @@ $ docker push username/myapp:v1
|
||||
|
||||
### 限制与配额
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
#### 镜像拉取限制
|
||||
|
||||
自 2020 年 11 月起,Docker Hub 对匿名和免费用户实施了拉取速率限制:
|
||||
@@ -86,14 +96,16 @@ $ docker push username/myapp:v1
|
||||
|
||||
### 安全最佳实践
|
||||
|
||||
#### 1. 启用 2FA(双因素认证)
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 1。启用 2FA (双因素认证)
|
||||
|
||||
为了保护您的 Docker Hub 账号安全,我们建议采取以下措施。
|
||||
|
||||
|
||||
在 Account Settings -> Security 中启用 2FA,保护账号安全。启用后,CLI 登录需要使用 **Access Token** 而非密码。
|
||||
|
||||
#### 2. 使用 Access Token
|
||||
#### 2。使用 Access Token
|
||||
|
||||
不要在脚本或 CI/CD 中直接使用登录密码。
|
||||
1. 在 Docker Hub -> Account Settings -> Security -> Access Tokens 创建 Token。
|
||||
@@ -103,7 +115,7 @@ $ docker push username/myapp:v1
|
||||
$ docker login -u username -p dckr_pat_xxxxxxx
|
||||
```
|
||||
|
||||
#### 3. 关注镜像漏洞
|
||||
#### 3。关注镜像漏洞
|
||||
|
||||
Docker Hub 会对官方镜像和付费用户的镜像进行安全扫描。在镜像标签页可以看到漏洞扫描结果。
|
||||
|
||||
@@ -111,7 +123,7 @@ Docker Hub 会对官方镜像和付费用户的镜像进行安全扫描。在镜
|
||||
|
||||
### Webhooks
|
||||
|
||||
当镜像被推送时,可以自动触发 HTTP 回调(例如通知 CI 系统部署)。
|
||||
当镜像被推送时,可以自动触发 HTTP 回调 (例如通知 CI 系统部署)。
|
||||
|
||||
**配置方法**:
|
||||
仓库页面 -> Webhooks -> Create Webhook。
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
|
||||
### 安装运行 docker-registry
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
#### 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
#### 容器运行
|
||||
|
||||
如果您需要搭建私有仓库,可以通过官方提供的 `registry` 镜像快速部署。
|
||||
@@ -99,12 +105,16 @@ REPOSITORY TAG IMAGE ID CREAT
|
||||
|
||||
这是因为 Docker 默认不允许非 `HTTPS` 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 `HTTPS` 访问的私有仓库。
|
||||
|
||||
#### Linux(systemd)
|
||||
#### 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
#### Linux
|
||||
|
||||
默认情况下,Docker 强制使用 HTTPS 协议推送镜像。如果您搭建的私有仓库是 HTTP 协议,需要进行如下配置。
|
||||
|
||||
|
||||
对于使用 `systemd` 的系统,请在 `/etc/docker/daemon.json` 中写入如下内容(如果文件不存在请新建该文件)
|
||||
对于使用 `systemd` 的系统,请在 `/etc/docker/daemon.json` 中写入如下内容 (如果文件不存在请新建该文件)
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -122,4 +132,4 @@ REPOSITORY TAG IMAGE ID CREAT
|
||||
|
||||
### 其他
|
||||
|
||||
对于 Docker Desktop for Windows 、 Docker Desktop for Mac 在设置中的 `Docker Engine` 中进行编辑 ,增加和上边一样的字符串即可。
|
||||
对于 Docker Desktop for Windows、Docker Desktop for Mac 在设置中的 `Docker Engine` 中进行编辑,增加和上边一样的字符串即可。
|
||||
|
||||
@@ -140,7 +140,7 @@ $ docker run --rm \
|
||||
|
||||
### 编辑 Docker Compose 配置
|
||||
|
||||
编辑 `compose.yaml`(或 `docker-compose.yml`)配置如下:
|
||||
编辑 `compose.yaml` (或 `docker-compose.yml`) 配置如下:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## 6.4 Nexus 3
|
||||
|
||||
使用 Docker 官方的 Registry 创建的仓库面临一些维护问题。比如某些镜像删除以后空间默认是不会回收的,需要一些命令去回收空间然后重启 Registry。在企业中把内部的一些工具包放入 `Nexus` 中是比较常见的做法,最新版本 `Nexus3.x` 全面支持 Docker 的私有镜像。所以使用 [`Nexus3.x`](https://www.sonatype.com/product/repository-oss-download) 一个软件来管理 `Docker` , `Maven` , `Yum` , `PyPI` 等是一个明智的选择。
|
||||
使用 Docker 官方的 Registry 创建的仓库面临一些维护问题。比如某些镜像删除以后空间默认是不会回收的,需要一些命令去回收空间然后重启 Registry。在企业中把内部的一些工具包放入 `Nexus` 中是比较常见的做法,最新版本 `Nexus3.x` 全面支持 Docker 的私有镜像。所以使用 [`Nexus3.x`](https://www.sonatype.com/product/repository-oss-download) 一个软件来管理 `Docker`,`Maven`,`Yum`,`PyPI` 等是一个明智的选择。
|
||||
|
||||
### 启动 Nexus 容器
|
||||
|
||||
@@ -36,17 +36,17 @@ $ docker exec nexus3 cat /nexus-data/admin.password
|
||||
9266139e-41a2-4abb-92ec-e4142a3532cb
|
||||
```
|
||||
|
||||
首次启动 Nexus 的默认帐号是 `admin` ,密码则是上边命令获取到的,点击右上角登录,首次登录需更改初始密码。
|
||||
首次启动 Nexus 的默认帐号是 `admin`,密码则是上边命令获取到的,点击右上角登录,首次登录需更改初始密码。
|
||||
|
||||
登录之后可以点击页面上方的齿轮按钮按照下面的方法进行设置。
|
||||
|
||||
### 创建仓库
|
||||
|
||||
创建一个私有仓库的方法: `Repository->Repositories` 点击右边菜单 `Create repository` 选择 `docker (hosted)`
|
||||
创建一个私有仓库的方法:`Repository->Repositories` 点击右边菜单 `Create repository` 选择 `docker (hosted)`
|
||||
|
||||
* **Name**: 仓库的名称
|
||||
* **HTTP**: 仓库单独的访问端口(例如:**5001**)
|
||||
* **Hosted -> Deployment policy**: 请选择**Allow redeploy** 否则无法上传 Docker 镜像。
|
||||
* **Name**:仓库的名称
|
||||
* **HTTP**:仓库单独的访问端口 (例如:**5001**)
|
||||
* **Hosted -> Deployment policy**:请选择 **Allow redeploy** 否则无法上传 Docker 镜像。
|
||||
|
||||
其它的仓库创建方法请各位自己摸索,还可以创建一个 `docker (proxy)` 类型的仓库链接到 DockerHub 上。再创建一个 `docker (group)` 类型的仓库把刚才的 `hosted` 与 `proxy` 添加在一起。主机在访问的时候默认下载私有仓库中的镜像,如果没有将链接到 DockerHub 中下载并缓存到 Nexus 中。
|
||||
|
||||
@@ -115,7 +115,7 @@ server {
|
||||
|
||||
### Docker 主机访问镜像仓库
|
||||
|
||||
如果不启用 SSL 加密可以通过 [前面章节](6.2_registry.md) 的方法添加非 https 仓库地址到 Docker 的配置文件中然后重启 Docker。
|
||||
如果不启用 SSL 加密可以通过[前面章节](6.2_registry.md)的方法添加非 https 仓库地址到 Docker 的配置文件中然后重启 Docker。
|
||||
|
||||
使用 SSL 加密以后程序需要访问就不能采用修改配置的方式了。具体方法如下:
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 第六章 访问仓库
|
||||
# 第六章访问仓库
|
||||
|
||||
仓库(`Repository`)是集中存放镜像的地方。
|
||||
仓库 (`Repository`) 是集中存放镜像的地方。
|
||||
|
||||
一个容易混淆的概念是注册服务器(`Registry`)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 `docker.io/ubuntu` 来说,`docker.io` 是注册服务器地址,`ubuntu` 是仓库名。
|
||||
一个容易混淆的概念是注册服务器 (`Registry`)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 `docker.io/ubuntu` 来说,`docker.io` 是注册服务器地址,`ubuntu` 是仓库名。
|
||||
|
||||
大部分时候,并不需要严格区分这两者的概念。
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
| **安全** | 推荐开启 2FA 并使用 Access Token |
|
||||
| **自动化** | 支持 Webhooks 和自动构建 |
|
||||
|
||||
### 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [私有仓库](6.2_registry.md):搭建自己的 Registry
|
||||
|
||||
Reference in New Issue
Block a user