Add blank lines before lists per CommonMark

This commit is contained in:
yeasy
2026-04-25 14:57:09 +00:00
parent 28864a3349
commit db2f015ba7
17 changed files with 21 additions and 0 deletions
+1
View File
@@ -101,6 +101,7 @@ $ docker compose up
#### 3. 资源效率
Docker 容器共享宿主机内核无需为每个应用运行完整的操作系统以一台 64GB 内存的物理服务器为例
- **传统虚拟机方案**每个虚拟机都需要运行完整的操作系统每个额外占用如 2GB 内存产生大量资源开销实际可用于应用的内存可能只有约 18GB
- **Docker 方案**容器直接共享宿主机系统只需付出很少的基础开销OS 及引擎约 4GB即可将约 60GB 的内存全部用于实际应用
+1
View File
@@ -27,6 +27,7 @@ flowchart TD
end
```
这种隔离主要通过 Linux 内核的 **Namespace** 实现资源限制通常与 **cgroups** 配合具体表现为
- **进程空间**容器看不到宿主机上的其他进程
- **网络**在默认网络模式下容器通常拥有独立的网络命名空间并可分配独立 IP使用 `host` `container:` 等模式时则例外
- **文件系统**容器拥有独立的 root 目录
+1
View File
@@ -23,6 +23,7 @@ Docker Engine 主要提供 `stable` 和 `test` 两个更新频道;`test.docker
### 国内用户的网络优化建议
值得注意的是国内直接访问 Docker 官方源速度较慢建议
- **安装过程**使用阿里云腾讯云等国内镜像源
- **镜像拉取**安装完成后配置 Docker 镜像加速器详见 [3.9 镜像加速器](3.9_mirror.md)这一步对日常开发的体验提升最明显
+1
View File
@@ -24,6 +24,7 @@
- 推荐使用专业级方案Nexus 3Harbor而非简单的 Registry
本章涵盖的方案从简到复杂
- Docker Registry最小化部署适合简单场景
- 私有仓库高级配置添加认证HTTPS 等生产必需项
- Nexus 3企业级完整解决方案支持权限管理备份等
+1
View File
@@ -5,6 +5,7 @@
`COPY` 是在构建镜像时将构建上下文Dockerfile 所在目录及其子目录中的文件或目录复制到容器内的指令它是处理应用代码配置文件最常用的方式
典型场景
- 复制应用源码`COPY . /app`
- 复制配置文件`COPY nginx.conf /etc/nginx/nginx.conf`
- 复制静态资源`COPY public /app/public`
+1
View File
@@ -5,6 +5,7 @@
在深入 CMD 的细节之前我们需要理解一个关键问题**CMD ENTRYPOINT 应该在什么时候使用**
这是 Dockerfile 使用中最常见的困惑之一简单的答案是
- **CMD**定义容器的默认命令如果用户在 `docker run` 时提供命令CMD 会被覆盖
- **ENTRYPOINT**定义容器的入口脚本通常用于启动应用的某个特定部分
+1
View File
@@ -21,6 +21,7 @@
#### 1. 创建集群
登录腾讯云控制台进入容器服务模块
- 选择 创建集群配置集群名称地域和网络
- 选择节点配置云服务器规格和数量
- 设置 Kubernetes 版本和安全组
+1
View File
@@ -26,6 +26,7 @@
#### 1. 创建集群
登录阿里云控制台进入容器服务 > Kubernetes 集群
- 点击 创建集群选择集群配置
- 配置集群名称地域可用区和节点类型
- 选择节点规格和数量支持弹性伸缩
+1
View File
@@ -62,6 +62,7 @@ $ skopeo copy docker://docker.io/library/alpine:latest docker://registry.example
$ skopeo copy docker://docker.io/library/alpine:latest oci:alpine-oci
```
如果我们要将本地的某个目录下的打包好的镜像再次推向 Registry 或转换为其它存储类型也是完全支持的诸如
- `docker://` 远端 Registry
- `docker-archive:` / `docker-daemon:` Docker 对应的归档文件或本地守护进程
- `oci:` / `oci-archive:` OCI 相关文件格式
+2
View File
@@ -7,6 +7,7 @@
[containerd](https://containerd.io/) 是一个行业标准的容器运行时,它最初是由 Docker 引擎中剥离出来的一个核心组件,后来 Docker 将其捐赠给了云原生计算基金会(CNCF),目前已经是一个 CNCF 毕业(Graduated)项目。
它的主要职责是管理单个宿主机上完整的容器生命周期包括
- 镜像的传输和存储
- 容器执行和管理
- 存储和网络接口的管理
@@ -40,6 +41,7 @@ Kubernetes 作为一个容器编排系统,为了屏蔽底层不同容器运行
### 17.6.3 为什么直接使用 containerd
对普通应用开发者来说Docker 依然是本地开发和测试的首选但对于构建云平台自动化流水线或深度管理 Kubernetes 集群的系统工程师来说直接使用 containerd 可以带来
- **更高的性能与更少的开销**去掉了 Docker Daemon 等附加组件的资源占用链路更短
- **更强的稳定性**作为专注于运行时的底层组件它的核心功能极为稳定且更新受控
- **直接符合 Kubernetes CRI 标准**在生产级 Kubernetes 集群中作为标准配置
+1
View File
@@ -9,6 +9,7 @@
默认情况下Docker 容器对系统资源的使用是没有限制的一个容器理论上可以使用宿主机所有的 CPU 计算能力吃光所有的内存耗尽所有的系统 PID
想象一下以下场景
- 一个恶意用户向你暴露在公网的应用发起海量并发请求
- 应用程序逻辑中存在内存泄漏漏洞
- 黑客在入侵容器后在里面运行了挖矿木马程序
+1
View File
@@ -81,6 +81,7 @@ $ docker version
在企业环境中 Docker 守护进程的访问控制往往不仅限于文件系统权限还需要更细粒度的授权策略**Authorization Plugin** 机制允许在 API 层级对请求进行拦截和审批
常见的授权插件包括
- **OPA/Conftest**开放策略引擎支持声明式策略定义
- **Prisma CloudTwistlock**商业容器安全平台
- 自定义脚本根据请求内容镜像命令用户等做出允许/拒绝决定
+2
View File
@@ -9,12 +9,14 @@
在默认情况下即便一个容器是在以 `root` 用户运行Docker 也只为其内核授予了所有可用能力中的 **一小部分白名单能力**
常见的 Linux Capabilities 包含
- `CAP_CHOWN`: 修改文件所有者
- `CAP_NET_BIND_SERVICE`: 绑定特权端口 1024 以下的端口
- `CAP_NET_ADMIN`: 网络管理的最高权限例如调整路由配置设置防火墙规则等
- `CAP_SYS_ADMIN`: 被誉为Linux 内核的特权网管允许各种高危操作挂载磁盘访问敏感设备等
为了在 **最小特权原则** 的指导下加强安全Docker 默认 **移除了** 大量可能导致容器大范围破坏宿主机的能力例如
* 完全禁止了任何通过 `CAP_SYS_ADMIN` 进行的核心挂载或设备操作
* 禁止修改内核模块
* 禁止直接访问硬件套接字
+1
View File
@@ -43,6 +43,7 @@ chmod: /etc/passwd: Operation not permitted
传统的 Linux 模型遵循 DAC自主访问控制这意味着如果一个文件被赋予了全员读写权限`777`普通隔离下任何人便都能修改 **MAC强制访问控制** 技术诸如 `AppArmor` (常用于 Ubuntu/Debian) `SELinux` (常用于 CentOS/RHEL)可以制定比文件所有权更宏观且优先的策略控制模块
在开启了上述机制的机器上
- **AppArmor**: Docker 为所有启动的应用加载了一个默认的 `docker-default` 模板文件如果你的某些异常写行为比如往特殊的内核心脏目录写入配置不在 AppArmor 许可列表之上即使拥有物理 Root写入同样失败
- **SELinux**: 所有的 Docker 操作强制附加特殊上下文标识标签就算把主机的 `/` 绑定给了黑客的某服务黑客对不属于 Docker 可见的标签的文件进行读写尝试亦会被阻止
+3
View File
@@ -530,6 +530,7 @@ push:
**Q: 扫描报告中有过时的 CVE如何处理**
A: 某些 CVE 可能已经被修复但数据库未更新可以
- 手动验证安全补丁是否已应用
- 使用工具的忽略列表功能 Trivy `.trivyignore`
- 定期更新扫描工具和漏洞数据库
@@ -537,6 +538,7 @@ A: 某些 CVE 可能已经被修复但数据库未更新,可以:
**Q: 如何平衡镜像大小和安全性**
A:
- 使用多阶段构建减少最终镜像大小
- 使用精简基础镜像AlpineDistroless
- 定期更新依赖而不是一味求小
@@ -545,6 +547,7 @@ A:
**Q: 如何管理和轮换签名密钥**
A:
- 在密钥管理系统 HashiCorp Vault中存储密钥
- 定期轮换密钥建议每 90
- 使用 Keyless 签名消除密钥管理复杂性
@@ -122,6 +122,7 @@ networks:
driver: bridge
```
启动后访问 `http://localhost:8080` 查看
- 容器性能统计
- 系统资源使用情况
- 历史性能数据
+1
View File
@@ -419,6 +419,7 @@ Kubernetes 进阶 (Week 24-36)
**Docker Certified Associate (DCA)**
考试信息
- 题目数55
- 时间限制90 分钟
- 及格分数73% 41 道题