mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
Update content
This commit is contained in:
@@ -1,55 +1,30 @@
|
|||||||
## 本章小结
|
## 本章小结
|
||||||
|
|
||||||
|
本章介绍了 Docker 容器的启动、停止、进入和删除等核心操作。
|
||||||
|
|
||||||
| 操作 | 命令 | 说明 |
|
| 操作 | 命令 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| 新建并运行 | `docker run` | 最常用的启动方式 |
|
| 新建并运行 | `docker run` | 最常用的启动方式 |
|
||||||
| 交互式启动 | `docker run -it` | 用于调试或临时操作 |
|
| 交互式启动 | `docker run -it` | 用于调试或临时操作 |
|
||||||
| 后台运行 | `docker run -d` | 用于服务类应用 |
|
| 后台运行 | `docker run -d` | 用于服务类应用 |
|
||||||
| 启动已停止的容器 | `docker start` | 重用已有容器 |
|
| 启动已停止的容器 | `docker start` | 重用已有容器 |
|
||||||
|
| 优雅停止 | `docker stop` | 先 SIGTERM,超时后 SIGKILL |
|
||||||
|
| 强制停止 | `docker kill` | 直接 SIGKILL |
|
||||||
|
| 重启 | `docker restart` | 停止后立即启动 |
|
||||||
|
| 停止全部 | `docker stop $(docker ps -q)` | 停止所有运行中容器 |
|
||||||
|
| 进入容器调试 | `docker exec -it 容器名 bash` | 推荐方式 |
|
||||||
|
| 执行单条命令 | `docker exec 容器名 命令` | 不进入交互模式 |
|
||||||
|
| 查看主进程输出 | `docker attach 容器名` | 慎用,退出可能停止容器 |
|
||||||
|
| 删除已停止容器 | `docker rm 容器名` | 需先停止 |
|
||||||
|
| 强制删除运行中容器 | `docker rm -f 容器名` | 直接删除 |
|
||||||
|
| 删除容器及匿名卷 | `docker rm -v 容器名` | 同时清理匿名卷 |
|
||||||
|
| 清理所有已停止容器 | `docker container prune` | 批量清理 |
|
||||||
|
|
||||||
### 5.7.1 延伸阅读
|
### 延伸阅读
|
||||||
|
|
||||||
- [后台运行](5.2_daemon.md):理解 `-d` 参数和容器生命周期
|
- [后台运行](5.2_daemon.md):理解 `-d` 参数和容器生命周期
|
||||||
- [进入容器](5.4_attach_exec.md):操作运行中的容器
|
- [进入容器](5.4_attach_exec.md):操作运行中的容器
|
||||||
- [网络配置](../09_network/README.md):理解端口映射的原理
|
- [网络配置](../09_network/README.md):理解端口映射的原理
|
||||||
- [数据管理](../08_data/README.md):数据持久化方案
|
- [数据管理](../08_data/README.md):数据持久化方案
|
||||||
|
|
||||||
| 操作 | 命令 | 说明 |
|
|
||||||
|------|------|------|
|
|
||||||
| 优雅停止 | `docker stop` | 先 SIGTERM,超时后 SIGKILL |
|
|
||||||
| 强制停止 | `docker kill` | 直接 SIGKILL |
|
|
||||||
| 重新启动 | `docker start` | 启动已停止的容器 |
|
|
||||||
| 重启 | `docker restart` | 停止后立即启动 |
|
|
||||||
| 停止全部 | `docker stop $(docker ps -q)` | 停止所有运行中容器 |
|
|
||||||
|
|
||||||
### 5.7.2 延伸阅读
|
|
||||||
|
|
||||||
- [启动容器](../05_container/5.1_run.md):容器启动详解
|
|
||||||
- [删除容器](5.6_rm.md):清理容器
|
|
||||||
- [容器日志](5.2_daemon.md):排查停止原因
|
|
||||||
|
|
||||||
| 需求 | 推荐命令 |
|
|
||||||
|------|---------|
|
|
||||||
| 进入容器调试 | `docker exec -it 容器名 bash` |
|
|
||||||
| 执行单条命令 | `docker exec 容器名 命令` |
|
|
||||||
| 查看主进程输出 | `docker attach 容器名` (慎用)|
|
|
||||||
|
|
||||||
### 5.7.3 延伸阅读
|
|
||||||
|
|
||||||
- [后台运行](5.2_daemon.md):理解容器主进程
|
|
||||||
- [查看容器](5.1_run.md):列出和过滤容器
|
|
||||||
- [容器日志](5.2_daemon.md):查看容器输出
|
|
||||||
|
|
||||||
| 操作 | 命令 |
|
|
||||||
|------|------|
|
|
||||||
| 删除已停止容器 | `docker rm 容器名` |
|
|
||||||
| 强制删除运行中容器 | `docker rm -f 容器名` |
|
|
||||||
| 删除容器及匿名卷 | `docker rm -v 容器名` |
|
|
||||||
| 清理所有已停止容器 | `docker container prune` |
|
|
||||||
| 删除所有容器 | `docker rm -f $(docker ps -aq)` |
|
|
||||||
|
|
||||||
### 5.7.4 延伸阅读
|
|
||||||
|
|
||||||
- [终止容器](5.3_stop.md):优雅停止容器
|
|
||||||
- [删除镜像](../04_image/4.3_rm.md):清理镜像
|
- [删除镜像](../04_image/4.3_rm.md):清理镜像
|
||||||
- [数据卷](../08_data/8.1_volume.md):数据卷管理
|
- [数据卷](../08_data/8.1_volume.md):数据卷管理
|
||||||
|
|||||||
@@ -45,7 +45,8 @@ $ docker pull nginx:alpine
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker login
|
$ docker login
|
||||||
## 输入用户名和密码
|
## 默认情况下,不带其它参数进行 docker login 会自动走 Device Code Web Flow (浏览器认证)
|
||||||
|
## 若在非交互 CI 环境中,推荐结合 --username 与 --password-stdin 参数使用
|
||||||
|
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
@@ -76,10 +77,18 @@ $ docker push username/myapp:v1
|
|||||||
| **免费账户** (已登录) | 每 6 小时 200 次请求 |
|
| **免费账户** (已登录) | 每 6 小时 200 次请求 |
|
||||||
| **Pro/Team 账户** | 无限制 |
|
| **Pro/Team 账户** | 无限制 |
|
||||||
|
|
||||||
> **提示**:如果在 CI/CD 环境中遇到 `toomanyrequests` 错误,建议:
|
#### 滥用限流 (Abuse Rate Limit)
|
||||||
> 1. 在 CI 中配置 `docker login`
|
|
||||||
> 2. 使用国内镜像加速器
|
除了上述针对特定账号拉取镜像数量的 Pull Rate Limit 之外,Docker Hub 对所有用户(包含已认证及付费用户)还实施了**滥用保护限流 (Abuse Rate Limiting)**。它是根据网络出口 IP (IPv4 或 IPv6 /64 子网) 计算整体请求频率,阈值动态触发(通常为每分钟数千级别请求)。
|
||||||
> 3. 搭建私有仓库代理
|
|
||||||
|
**两类的差异与排查方法**:
|
||||||
|
- **Pull Rate Limit**:针对拉取量达到上限。报错返回 `429 Too Many Requests`,并且 HTTP 返回体/CLI 错误提示中会带有明确的 `toomanyrequests: You have reached your pull rate limit` 提示,常附有账户升级链接。
|
||||||
|
- **Abuse Rate Limit**:防范接口频率打击。报错仅返回简化的 `429 Too Many Requests`。这一限流不分付费与否,常发生在“多终端共享出口 IP”的企业局域网或者第三方云 CI 服务(如 GitHub Actions 等)中,即使你已正常配置 `docker login` 也依旧可能触发。
|
||||||
|
|
||||||
|
> **提示**:如果在 CI/CD 等环境遇到 429 错误,建议:
|
||||||
|
> 1. 先甄别具体是哪类限流:普通的 pull rate limit 只要在 CI 中配置 `docker login` (并使用有效账号) 就能解除匿名限制。
|
||||||
|
> 2. 如果是 Abuse 频控导致,应考虑搭建私有仓库作为拉取缓存代理 (Registry pull-through cache),避免频繁直接请求官方 Hub。
|
||||||
|
> 3. 使用国内镜像加速器。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
## 本章小结
|
## 本章小结
|
||||||
|
|
||||||
|
本章介绍了 Docker Hub 的使用、私有仓库的搭建以及 Nexus 3 等企业级方案。
|
||||||
|
|
||||||
| 功能 | 说明 |
|
| 功能 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| **官方镜像** | 优先使用的基础镜像 |
|
| **官方镜像** | 优先使用的基础镜像 |
|
||||||
@@ -7,9 +9,7 @@
|
|||||||
| **安全** | 推荐开启 2FA 并使用 Access Token |
|
| **安全** | 推荐开启 2FA 并使用 Access Token |
|
||||||
| **自动化** | 支持 Webhooks 和自动构建 |
|
| **自动化** | 支持 Webhooks 和自动构建 |
|
||||||
|
|
||||||
### 6.5.1 概述
|
### 延伸阅读
|
||||||
|
|
||||||
### 6.5.2 延伸阅读
|
|
||||||
|
|
||||||
- [私有仓库](6.2_registry.md):搭建自己的 Registry
|
- [私有仓库](6.2_registry.md):搭建自己的 Registry
|
||||||
- [镜像加速器](../03_install/3.9_mirror.md):加速下载
|
- [镜像加速器](../03_install/3.9_mirror.md):加速下载
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://github.com/yeasy/docker_practice) [](https://github.com/yeasy/docker_practice/releases) [](https://docs.docker.com/engine/release-notes/) [][1]
|
[](https://github.com/yeasy/docker_practice) [](https://github.com/yeasy/docker_practice/releases) [](https://docs.docker.com/engine/release-notes/) [][1]
|
||||||
|
|
||||||
**v1.6.1**
|
**v1.6.2**
|
||||||
|
|
||||||
[Docker](https://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!
|
[Docker](https://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user