mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
Fix Docker Hub rate limits, DCT timeline, image tags, etcd and Alertmanager
This commit is contained in:
@@ -255,7 +255,7 @@ someuser/myapp # ⚠️ 需要评估
|
|||||||
|
|
||||||
#### 镜像签名
|
#### 镜像签名
|
||||||
|
|
||||||
当前更推荐使用 Sigstore / Notation 体系进行镜像签名与验证。`Docker Content Trust (DCT)` 已于 2025 年 8 月 8 日开始停用,官方 Docker 镜像已停止 DCT 签名,2028 年 3 月 31 日将完全删除此功能,不建议作为新项目方案。
|
当前更推荐使用 Sigstore / Notation 体系进行镜像签名与验证。`Docker Content Trust (DCT)` 已进入弃用阶段:2025 年 8 月 8 日起最早的 DCT 签名证书开始过期,2025 年 9 月 30 日起不能在新 Registry 启用 DCT,2028 年 3 月 31 日将完全删除此功能。不建议作为新项目方案。
|
||||||
|
|
||||||
> 注意:Cosign 默认会把签名推送回镜像所在仓库,请使用你有推送权限的镜像地址。
|
> 注意:Cosign 默认会把签名推送回镜像所在仓库,请使用你有推送权限的镜像地址。
|
||||||
|
|
||||||
|
|||||||
@@ -67,15 +67,15 @@ $ docker push username/myapp:v1
|
|||||||
|
|
||||||
#### 镜像拉取限制
|
#### 镜像拉取限制
|
||||||
|
|
||||||
Docker Hub 对不同类型用户实施拉取速率限制(2025 年 4 月起更新):
|
Docker Hub 对不同类型用户实施拉取速率限制(基于 6 小时周期):
|
||||||
|
|
||||||
| 用户类型 | 限制 |
|
| 用户类型 | 限制 |
|
||||||
|---------|------|
|
|---------|------|
|
||||||
| **匿名用户** (未登录) | 每小时 10 次请求 |
|
| **匿名用户** (未登录) | 每 6 小时 100 次请求 |
|
||||||
| **免费账户** (已登录) | 每小时 100 次请求 |
|
| **免费账户** (已登录) | 每 6 小时 200 次请求 |
|
||||||
| **Pro/Team/Business 账户** | 无限制(公平使用政策) |
|
| **Pro/Team/Business 账户** | 无限制(公平使用政策) |
|
||||||
|
|
||||||
> **注意**:2025 年 4 月前的旧限制为匿名用户每 6 小时 100 次、免费账户每 6 小时 200 次。新政策大幅收紧了匿名拉取额度,建议在 CI/CD 环境中始终配置 `docker login`。
|
> **注意**:自 2025 年 4 月起,所有付费订阅用户享有无限制拉取额度。匿名用户和免费账户的限制保持不变,建议在 CI/CD 环境中始终配置 `docker login` 以获得更高的拉取额度。
|
||||||
|
|
||||||
#### 滥用限流
|
#### 滥用限流
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ RUN go get -d -v github.com/go-sql-driver/mysql \
|
|||||||
编写 `Dockerfile.copy` 文件
|
编写 `Dockerfile.copy` 文件
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
FROM alpine:latest
|
FROM alpine:3
|
||||||
|
|
||||||
RUN apk --no-cache add ca-certificates
|
RUN apk --no-cache add ca-certificates
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ COPY app.go .
|
|||||||
|
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
|
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
|
||||||
|
|
||||||
FROM alpine:latest as prod
|
FROM alpine:3 as prod
|
||||||
|
|
||||||
RUN apk --no-cache add ca-certificates
|
RUN apk --no-cache add ca-certificates
|
||||||
|
|
||||||
@@ -176,5 +176,5 @@ $ docker build --target builder -t username/imagename:tag .
|
|||||||
上面例子中我们使用 `COPY --from=0 /go/src/github.com/go/helloworld/app .` 从上一阶段的镜像中复制文件,我们也可以复制任意镜像中的文件。
|
上面例子中我们使用 `COPY --from=0 /go/src/github.com/go/helloworld/app .` 从上一阶段的镜像中复制文件,我们也可以复制任意镜像中的文件。
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf
|
COPY --from=nginx:1.25-alpine /etc/nginx/nginx.conf /nginx.conf
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ server {
|
|||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:node 镜像推荐使用具体的版本标签(如 node:20-alpine)
|
# 注:node 镜像推荐使用具体的版本标签(如 node:20-alpine)
|
||||||
FROM node:alpine as frontend
|
FROM node:20-alpine as frontend
|
||||||
|
|
||||||
COPY package.json /app/
|
COPY package.json /app/
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ RUN set -x ; cd /app \
|
|||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:composer 镜像推荐使用具体的版本标签(如 composer:2.x)
|
# 注:composer 镜像推荐使用具体的版本标签(如 composer:2.x)
|
||||||
FROM composer as composer
|
FROM composer:2 as composer
|
||||||
|
|
||||||
COPY database/ /app/database/
|
COPY database/ /app/database/
|
||||||
COPY composer.json composer.lock /app/
|
COPY composer.json composer.lock /app/
|
||||||
@@ -129,7 +129,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
|||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.25-alpine)
|
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.25-alpine)
|
||||||
FROM nginx:alpine as nginx
|
FROM nginx:1.25-alpine as nginx
|
||||||
|
|
||||||
ARG LARAVEL_PATH=/app/laravel
|
ARG LARAVEL_PATH=/app/laravel
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ $ docker run -dit --rm --network=laravel -p 8080:80 my/nginx
|
|||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:生产环境推荐使用具体的版本标签,如 node:20-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.25-alpine
|
# 注:生产环境推荐使用具体的版本标签,如 node:20-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.25-alpine
|
||||||
FROM node:alpine as frontend
|
FROM node:20-alpine as frontend
|
||||||
|
|
||||||
COPY package.json /app/
|
COPY package.json /app/
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ RUN set -x ; cd /app \
|
|||||||
&& mkdir -p public \
|
&& mkdir -p public \
|
||||||
&& npm run production
|
&& npm run production
|
||||||
|
|
||||||
FROM composer as composer
|
FROM composer:2 as composer
|
||||||
|
|
||||||
COPY database/ /app/database/
|
COPY database/ /app/database/
|
||||||
COPY composer.json composer.lock /app/
|
COPY composer.json composer.lock /app/
|
||||||
@@ -229,7 +229,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
|||||||
&& chmod -R 777 storage \
|
&& chmod -R 777 storage \
|
||||||
&& php artisan package:discover
|
&& php artisan package:discover
|
||||||
|
|
||||||
FROM nginx:alpine as nginx
|
FROM nginx:1.25-alpine as nginx
|
||||||
|
|
||||||
ARG LARAVEL_PATH=/app/laravel
|
ARG LARAVEL_PATH=/app/laravel
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM node:alpine as frontend
|
FROM node:20-alpine as frontend
|
||||||
|
|
||||||
COPY package.json /app/
|
COPY package.json /app/
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ RUN set -x ; cd /app \
|
|||||||
&& mkdir -p public \
|
&& mkdir -p public \
|
||||||
&& npm run production
|
&& npm run production
|
||||||
|
|
||||||
FROM composer as composer
|
FROM composer:2 as composer
|
||||||
|
|
||||||
COPY database/ /app/database/
|
COPY database/ /app/database/
|
||||||
COPY composer.json /app/
|
COPY composer.json /app/
|
||||||
@@ -47,7 +47,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
|||||||
&& chmod -R 777 storage \
|
&& chmod -R 777 storage \
|
||||||
&& php artisan package:discover
|
&& php artisan package:discover
|
||||||
|
|
||||||
FROM nginx:alpine as nginx
|
FROM nginx:1.25-alpine as nginx
|
||||||
|
|
||||||
ARG LARAVEL_PATH=/app/laravel
|
ARG LARAVEL_PATH=/app/laravel
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ $ ETCDCTL_API=3 etcdctl member list
|
|||||||
$ ETCDCTL_API=3 etcdctl put testkey "hello world"
|
$ ETCDCTL_API=3 etcdctl put testkey "hello world"
|
||||||
OK
|
OK
|
||||||
|
|
||||||
$ etcdctl get testkey
|
$ ETCDCTL_API=3 etcdctl get testkey
|
||||||
testkey
|
testkey
|
||||||
hello world
|
hello world
|
||||||
```
|
```
|
||||||
@@ -96,5 +96,5 @@ $ brew install etcd
|
|||||||
|
|
||||||
$ etcd
|
$ etcd
|
||||||
|
|
||||||
$ etcdctl member list
|
$ ETCDCTL_API=3 etcdctl member list
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ receivers:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
alertmanager:
|
alertmanager:
|
||||||
image: prom/alertmanager:v0.27.0
|
image: prom/alertmanager:v0.32.0
|
||||||
volumes:
|
volumes:
|
||||||
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
|
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
Reference in New Issue
Block a user