mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 20:04:36 +00:00
Add latest techniques
This commit is contained in:
@@ -12,6 +12,28 @@ $ docker buildx build .
|
|||||||
|
|
||||||
Buildx 使用 [BuildKit 引擎](buildkit.md) 进行构建,支持许多新的功能,具体参考 [Buildkit](buildkit.md) 一节。
|
Buildx 使用 [BuildKit 引擎](buildkit.md) 进行构建,支持许多新的功能,具体参考 [Buildkit](buildkit.md) 一节。
|
||||||
|
|
||||||
|
### 使用 `bake`
|
||||||
|
|
||||||
|
`docker buildx bake` 是一个高级构建命令,支持从 HCL、JSON 或 Compose 文件中定义构建目标,实现复杂的流水线构建。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 从 docker-compose.yml 构建所有服务
|
||||||
|
$ docker buildx bake
|
||||||
|
|
||||||
|
# 仅构建指定目标
|
||||||
|
$ docker buildx bake web
|
||||||
|
```
|
||||||
|
|
||||||
|
### 生成 SBOM
|
||||||
|
|
||||||
|
Buildx 支持在构建时直接生成 SBOM (Software Bill of Materials),这对于软件供应链安全至关重要。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker buildx build --sbom=true -t myimage .
|
||||||
|
```
|
||||||
|
|
||||||
|
该命令会在构建结果中包含 SPDX 或 CycloneDX 格式的 SBOM 数据。
|
||||||
|
|
||||||
## 官方文档
|
## 官方文档
|
||||||
|
|
||||||
* https://docs.docker.com/engine/reference/commandline/buildx/
|
* https://docs.docker.com/engine/reference/commandline/buildx/
|
||||||
|
|||||||
@@ -285,6 +285,35 @@ $ docker compose scale web=3 db=2
|
|||||||
|
|
||||||
打印版本信息。
|
打印版本信息。
|
||||||
|
|
||||||
|
### `watch`
|
||||||
|
|
||||||
|
格式为 `docker compose watch [options] [SERVICE...]`。
|
||||||
|
|
||||||
|
启用开发模式,自动监视源代码并在文件发生变化时刷新服务。这需要项目中有 `compose.yaml` (或 `docker-compose.yml`),且定义了 `x-develop` 或 `develop` 配置段。
|
||||||
|
|
||||||
|
例如:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
develop:
|
||||||
|
watch:
|
||||||
|
- action: sync
|
||||||
|
path: ./web
|
||||||
|
target: /src/web
|
||||||
|
ignore:
|
||||||
|
- node_modules/
|
||||||
|
- action: rebuild
|
||||||
|
path: package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
选项:
|
||||||
|
|
||||||
|
* `--no-up` 不自动启动服务。
|
||||||
|
|
||||||
|
* `--quiet` 静默模式。
|
||||||
|
|
||||||
## 参考资料
|
## 参考资料
|
||||||
|
|
||||||
* [官方文档](https://docs.docker.com/compose/reference/overview/)
|
* [官方文档](https://docs.docker.com/compose/reference/overview/)
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
# Docker Desktop 启用 Kubernetes
|
# Docker Desktop 启用 Kubernetes
|
||||||
|
|
||||||
使用 Docker Desktop 可以很方便的启用 Kubernetes,由于国内获取不到 `k8s.gcr.io` 镜像,我们必须首先解决这一问题。
|
使用 Docker Desktop 可以很方便的启用 Kubernetes。
|
||||||
|
|
||||||
## 获取 `k8s.gcr.io` 镜像
|
|
||||||
|
|
||||||
由于国内拉取不到 `k8s.gcr.io` 镜像,我们可以使用开源项目 [AliyunContainerService/k8s-for-docker-desktop](https://github.com/AliyunContainerService/k8s-for-docker-desktop) 来获取所需的镜像。
|
|
||||||
|
|
||||||
## 启用 Kubernetes
|
## 启用 Kubernetes
|
||||||
|
|
||||||
在 Docker Desktop 设置页面,点击 `Kubernetes`,选择 `Enable Kubernetes`,稍等片刻,看到左下方 `Kubernetes` 变为 `running`,Kubernetes 启动成功。
|
在 Docker Desktop 设置页面,点击 `Kubernetes`,选择 `Enable Kubernetes`,稍等片刻,看到左下方 `Kubernetes` 变为 `running`,Kubernetes 启动成功。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
> 注意:Kubernetes 的镜像存储在 `registry.k8s.io`,如果国内网络无法直接访问,可以在 Docker Desktop 配置中的 `Docker Engine` 处配置镜像加速器,或者利用国内云服务商的镜像仓库手动拉取镜像并 retag。
|
||||||
|
|
||||||
## 测试
|
## 测试
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ After=network.target local-fs.target
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
ExecStartPre=-/sbin/modprobe overlay
|
||||||
ExecStart=/usr/bin/containerd --config //etc/cri-containerd/config.toml
|
ExecStart=/usr/bin/containerd --config /etc/cri-containerd/config.toml
|
||||||
|
|
||||||
Type=notify
|
Type=notify
|
||||||
Delegate=yes
|
Delegate=yes
|
||||||
|
|||||||
@@ -296,6 +296,36 @@ $ docker run --runtime=runsc myapp
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 软件供应链安全
|
||||||
|
|
||||||
|
随着软件供应链攻击日益频繁,仅保障运行时安全已不足够。
|
||||||
|
|
||||||
|
### 1. SBOM (软件物料清单)
|
||||||
|
|
||||||
|
SBOM 类似于食品的配料表,列出了容器镜像中包含的所有软件包及其版本。
|
||||||
|
|
||||||
|
- **生成 SBOM**: 使用 `docker buildx build --sbom` 或 `docker scout sbom`。
|
||||||
|
- **管理 SBOM**: 确保持续监控 SBOM 中的组件是否存在新披露的漏洞。
|
||||||
|
|
||||||
|
### 2. 镜像签名 (Sigstore / Notary v2)
|
||||||
|
|
||||||
|
确保镜像在构建后未被篡改,且确实来自可信的发布者。
|
||||||
|
|
||||||
|
- **Cosign**: Sigstore 项目的一部分,用于签署和验证容器镜像。
|
||||||
|
```bash
|
||||||
|
# 签署镜像
|
||||||
|
$ cosign sign --key cosign.key myimage:tag
|
||||||
|
|
||||||
|
# 验证镜像
|
||||||
|
$ cosign verify --key cosign.pub myimage:tag
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. SLSA (Supply-chain Levels for Software Artifacts)
|
||||||
|
|
||||||
|
遵循 SLSA 框架,确保构建过程的完整性,例如使用 GitHub Actions 等受控环境进行构建,而非在开发者本地机器上构建发布。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 本章小结
|
## 本章小结
|
||||||
|
|
||||||
| 安全措施 | 重要程度 | 实现方式 |
|
| 安全措施 | 重要程度 | 实现方式 |
|
||||||
|
|||||||
Reference in New Issue
Block a user