mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
fix(content): harden install and security guidance
This commit is contained in:
@@ -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
|
||||
|
||||
# 若需要测试频道:
|
||||
|
||||
@@ -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
|
||||
|
||||
# 若需要测试频道:
|
||||
|
||||
@@ -91,7 +91,7 @@ $ sudo dnf -y install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING>
|
||||
在真正执行前,建议先用 `--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
|
||||
|
||||
# 若需要测试频道:
|
||||
|
||||
@@ -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
|
||||
|
||||
# 若需要测试频道:
|
||||
|
||||
@@ -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
|
||||
|
||||
# 若需要测试频道:
|
||||
|
||||
@@ -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 卸载
|
||||
|
||||
@@ -92,7 +92,7 @@ spec:
|
||||
### 13.4.5 ConfigMap 与 Secret
|
||||
|
||||
* **ConfigMap**:存储非机密的配置数据 (配置文件、环境变量)。
|
||||
* **Secret**:存储机密数据 (密码、Token、证书),在 Etcd 中加密存储。
|
||||
* **Secret**:存储机密数据 (密码、Token、证书)。Secret 值默认只是 Base64 编码并存入 etcd;生产环境应显式启用 etcd 静态加密或 KMS。
|
||||
|
||||
通过将配置与镜像分离,保证了容器的可移植性。
|
||||
|
||||
|
||||
@@ -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. 运行时镜像扫描策略
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
### 碰到网络问题,无法 pull 镜像,命令行指定 http\_proxy 无效?
|
||||
|
||||
答:在 Docker 配置文件中添加 `export http_proxy="http://<PROXY_HOST>:<PROXY_PORT>"`,之后重启 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` 只是镜像元数据,不会自动发布端口。
|
||||
|
||||
### 可以在一个容器中同时运行多个应用进程么?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user