From b4b0d4160a229403d8d9a064e2664e4c3dffe363 Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Tue, 3 Feb 2026 11:09:52 -0800 Subject: [PATCH] Add latest techniques --- buildx/buildx.md | 22 ++++++++++++++++++++++ compose/commands.md | 29 +++++++++++++++++++++++++++++ kubernetes/setup/docker-desktop.md | 10 ++++------ kubernetes/setup/kubeadm.md | 2 +- security/README.md | 30 ++++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+), 7 deletions(-) diff --git a/buildx/buildx.md b/buildx/buildx.md index bdbfe9a..e2512ef 100644 --- a/buildx/buildx.md +++ b/buildx/buildx.md @@ -12,6 +12,28 @@ $ docker buildx build . 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/ diff --git a/compose/commands.md b/compose/commands.md index 450b4d2..57e2362 100644 --- a/compose/commands.md +++ b/compose/commands.md @@ -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/) diff --git a/kubernetes/setup/docker-desktop.md b/kubernetes/setup/docker-desktop.md index a26c50a..559649f 100644 --- a/kubernetes/setup/docker-desktop.md +++ b/kubernetes/setup/docker-desktop.md @@ -1,16 +1,14 @@ # Docker Desktop 启用 Kubernetes -使用 Docker Desktop 可以很方便的启用 Kubernetes,由于国内获取不到 `k8s.gcr.io` 镜像,我们必须首先解决这一问题。 - -## 获取 `k8s.gcr.io` 镜像 - -由于国内拉取不到 `k8s.gcr.io` 镜像,我们可以使用开源项目 [AliyunContainerService/k8s-for-docker-desktop](https://github.com/AliyunContainerService/k8s-for-docker-desktop) 来获取所需的镜像。 +使用 Docker Desktop 可以很方便的启用 Kubernetes。 ## 启用 Kubernetes 在 Docker Desktop 设置页面,点击 `Kubernetes`,选择 `Enable Kubernetes`,稍等片刻,看到左下方 `Kubernetes` 变为 `running`,Kubernetes 启动成功。 -![](https://github.com/AliyunContainerService/k8s-for-docker-desktop/raw/master/images/k8s.png) +![](https://github.com/docker/docs/raw/main/assets/images/desktop/settings-kubernetes.png) + +> 注意:Kubernetes 的镜像存储在 `registry.k8s.io`,如果国内网络无法直接访问,可以在 Docker Desktop 配置中的 `Docker Engine` 处配置镜像加速器,或者利用国内云服务商的镜像仓库手动拉取镜像并 retag。 ## 测试 diff --git a/kubernetes/setup/kubeadm.md b/kubernetes/setup/kubeadm.md index 78a5d00..10e6fed 100644 --- a/kubernetes/setup/kubeadm.md +++ b/kubernetes/setup/kubeadm.md @@ -28,7 +28,7 @@ After=network.target local-fs.target [Service] 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 Delegate=yes diff --git a/security/README.md b/security/README.md index 0a5a6e4..b6f0f44 100644 --- a/security/README.md +++ b/security/README.md @@ -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 等受控环境进行构建,而非在开发者本地机器上构建发布。 + +--- + ## 本章小结 | 安全措施 | 重要程度 | 实现方式 |