From 2e625a3cdf70a072999a93c24c3fd05004fa6743 Mon Sep 17 00:00:00 2001 From: yeasy Date: Thu, 21 May 2026 01:23:44 -0700 Subject: [PATCH] fix(content): harden install and security guidance --- 03_install/3.1_ubuntu.md | 2 +- 03_install/3.2_debian.md | 2 +- 03_install/3.3_fedora.md | 2 +- 03_install/3.4_centos.md | 2 +- 03_install/3.5_raspberry-pi.md | 2 +- 11_compose/11.2_install.md | 2 +- 13_kubernetes_concepts/13.4_advanced.md | 2 +- 18_security/18.6_image_security.md | 34 ++++++++++++------------- appendix/faq/README.md | 7 ++--- 9 files changed, 27 insertions(+), 28 deletions(-) diff --git a/03_install/3.1_ubuntu.md b/03_install/3.1_ubuntu.md index 4bea9af..ad8fdf6 100644 --- a/03_install/3.1_ubuntu.md +++ b/03_install/3.1_ubuntu.md @@ -91,7 +91,7 @@ $ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin do 在真正执行前,建议先用 `--dry-run` 预览脚本动作: ```bash -$ curl -fsSL get.docker.com -o get-docker.sh +$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh --dry-run # 若需要测试频道: diff --git a/03_install/3.2_debian.md b/03_install/3.2_debian.md index 8019efd..f1dac08 100644 --- a/03_install/3.2_debian.md +++ b/03_install/3.2_debian.md @@ -81,7 +81,7 @@ $ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin do 在真正执行前,建议先用 `--dry-run` 预览脚本动作: ```bash -$ curl -fsSL get.docker.com -o get-docker.sh +$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh --dry-run # 若需要测试频道: diff --git a/03_install/3.3_fedora.md b/03_install/3.3_fedora.md index b391d75..1363c92 100644 --- a/03_install/3.3_fedora.md +++ b/03_install/3.3_fedora.md @@ -91,7 +91,7 @@ $ sudo dnf -y install docker-ce- docker-ce-cli- 在真正执行前,建议先用 `--dry-run` 预览脚本动作: ```bash -$ curl -fsSL get.docker.com -o get-docker.sh +$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh --dry-run # 若需要测试频道: diff --git a/03_install/3.4_centos.md b/03_install/3.4_centos.md index 8b96e9b..283997a 100644 --- a/03_install/3.4_centos.md +++ b/03_install/3.4_centos.md @@ -88,7 +88,7 @@ Docker 官方提醒:如果主机使用 `ufw` 或 `firewalld` 管理防火墙 在真正执行前,建议先用 `--dry-run` 预览脚本动作: ```bash -$ curl -fsSL get.docker.com -o get-docker.sh +$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh --dry-run # 若需要测试频道: diff --git a/03_install/3.5_raspberry-pi.md b/03_install/3.5_raspberry-pi.md index 7aea8f4..d0f960b 100644 --- a/03_install/3.5_raspberry-pi.md +++ b/03_install/3.5_raspberry-pi.md @@ -114,7 +114,7 @@ $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugi 在真正执行前,建议先用 `--dry-run` 预览脚本动作: ```bash -$ curl -fsSL get.docker.com -o get-docker.sh +$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh --dry-run # 若需要测试频道: diff --git a/11_compose/11.2_install.md b/11_compose/11.2_install.md index ee78238..1f23932 100644 --- a/11_compose/11.2_install.md +++ b/11_compose/11.2_install.md @@ -19,7 +19,7 @@ $ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose ```bash $ docker compose version -Docker Compose version v5.x +Docker Compose version v2.x.x ``` ### 11.2.3 卸载 diff --git a/13_kubernetes_concepts/13.4_advanced.md b/13_kubernetes_concepts/13.4_advanced.md index 7d7f70d..a046969 100644 --- a/13_kubernetes_concepts/13.4_advanced.md +++ b/13_kubernetes_concepts/13.4_advanced.md @@ -92,7 +92,7 @@ spec: ### 13.4.5 ConfigMap 与 Secret * **ConfigMap**:存储非机密的配置数据 (配置文件、环境变量)。 -* **Secret**:存储机密数据 (密码、Token、证书),在 Etcd 中加密存储。 +* **Secret**:存储机密数据 (密码、Token、证书)。Secret 值默认只是 Base64 编码并存入 etcd;生产环境应显式启用 etcd 静态加密或 KMS。 通过将配置与镜像分离,保证了容器的可移植性。 diff --git a/18_security/18.6_image_security.md b/18_security/18.6_image_security.md index 81211ab..46123e4 100644 --- a/18_security/18.6_image_security.md +++ b/18_security/18.6_image_security.md @@ -20,7 +20,9 @@ Trivy 是由 Aqua Security 开发的开源漏洞扫描器,以其轻量级、 ```bash # 安装 Trivy -curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin +curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh -o install-trivy.sh +less install-trivy.sh # 先审阅脚本内容 +sudo sh install-trivy.sh -b /usr/local/bin # 扫描本地镜像 trivy image nginx:latest @@ -58,7 +60,9 @@ Grype 由 Anchore 开发,支持更广泛的软件包管理器和语言。 ```bash # 安装 Grype -curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin +curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh -o install-grype.sh +less install-grype.sh +sudo sh install-grype.sh -b /usr/local/bin # 扫描镜像 grype docker:nginx:latest @@ -130,7 +134,9 @@ Syft 是 Anchore 推出的专业 SBOM 生成工具。 **安装:** ```bash -curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin +curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh -o install-syft.sh +less install-syft.sh +sudo sh install-syft.sh -b /usr/local/bin ``` **生成 SBOM:** @@ -319,22 +325,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends curl \ #### 2. 构建时扫描 -在 Dockerfile 中集成安全扫描: +在 CI/CD 构建阶段集成安全扫描,避免在 Dockerfile 里从分支 URL 下载并执行远程安装脚本: -```dockerfile -FROM golang:1.26-alpine AS builder -WORKDIR /app -COPY . . - -# 使用 Trivy 扫描源代码 -RUN apk add --no-cache curl && \ - curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin && \ - trivy fs . --exit-code 1 --severity HIGH,CRITICAL - -RUN go build -o app . - -FROM alpine:3.17@sha256:abcd1234...(请替换为实际完整的 64 位摘要哈希) -COPY --from=builder /app/app /app +```bash +docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + aquasec/trivy:latest \ + fs . --exit-code 1 --severity HIGH,CRITICAL ``` #### 3. 运行时镜像扫描策略 diff --git a/appendix/faq/README.md b/appendix/faq/README.md index 3c78b85..355315b 100644 --- a/appendix/faq/README.md +++ b/appendix/faq/README.md @@ -29,7 +29,7 @@ ### 碰到网络问题,无法 pull 镜像,命令行指定 http\_proxy 无效? -答:在 Docker 配置文件中添加 `export http_proxy="http://:"`,之后重启 Docker 服务即可。 +答:先区分代理要作用在哪一层。Docker daemon 拉取镜像时,推荐在 `daemon.json` 的 `proxies` 字段或 systemd drop-in 中配置 `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY`,然后重启 Docker 服务。Docker CLI、构建过程和容器内应用的代理应分别使用 `~/.docker/config.json`、`--build-arg` 或 `docker run --env` 配置;不要把 `export http_proxy=...` 当作 `daemon.json` 内容写入。 ## 容器相关 @@ -79,8 +79,9 @@ $ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox 答: -* 创建镜像时 `Dockerfile` 要通过 `EXPOSE` 指定正确的开放端口; -* 容器启动时指定 `PublishAllPort = true`。 +* 创建容器时用 `-p HOST_PORT:CONTAINER_PORT` 或 `--publish` 显式发布端口,例如 `docker run -p 8080:80 nginx`; +* 只想把镜像声明的 `EXPOSE` 端口随机发布到宿主机端口时,用 `-P` / `--publish-all`,之后通过 `docker ps` 查看实际端口; +* `Dockerfile` 中的 `EXPOSE` 只是镜像元数据,不会自动发布端口。 ### 可以在一个容器中同时运行多个应用进程么?