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 默认会把签名推送回镜像所在仓库,请使用你有推送权限的镜像地址。
|
||||
|
||||
|
||||
@@ -67,15 +67,15 @@ $ docker push username/myapp:v1
|
||||
|
||||
#### 镜像拉取限制
|
||||
|
||||
Docker Hub 对不同类型用户实施拉取速率限制(2025 年 4 月起更新):
|
||||
Docker Hub 对不同类型用户实施拉取速率限制(基于 6 小时周期):
|
||||
|
||||
| 用户类型 | 限制 |
|
||||
|---------|------|
|
||||
| **匿名用户** (未登录) | 每小时 10 次请求 |
|
||||
| **免费账户** (已登录) | 每小时 100 次请求 |
|
||||
| **匿名用户** (未登录) | 每 6 小时 100 次请求 |
|
||||
| **免费账户** (已登录) | 每 6 小时 200 次请求 |
|
||||
| **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` 文件
|
||||
|
||||
```docker
|
||||
FROM alpine:latest
|
||||
FROM alpine:3
|
||||
|
||||
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 .
|
||||
|
||||
FROM alpine:latest as prod
|
||||
FROM alpine:3 as prod
|
||||
|
||||
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 .` 从上一阶段的镜像中复制文件,我们也可以复制任意镜像中的文件。
|
||||
|
||||
```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
|
||||
# 注:node 镜像推荐使用具体的版本标签(如 node:20-alpine)
|
||||
FROM node:alpine as frontend
|
||||
FROM node:20-alpine as frontend
|
||||
|
||||
COPY package.json /app/
|
||||
|
||||
@@ -83,7 +83,7 @@ RUN set -x ; cd /app \
|
||||
|
||||
```docker
|
||||
# 注:composer 镜像推荐使用具体的版本标签(如 composer:2.x)
|
||||
FROM composer as composer
|
||||
FROM composer:2 as composer
|
||||
|
||||
COPY database/ /app/database/
|
||||
COPY composer.json composer.lock /app/
|
||||
@@ -129,7 +129,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
||||
|
||||
```docker
|
||||
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.25-alpine)
|
||||
FROM nginx:alpine as nginx
|
||||
FROM nginx:1.25-alpine as nginx
|
||||
|
||||
ARG LARAVEL_PATH=/app/laravel
|
||||
|
||||
@@ -180,7 +180,7 @@ $ docker run -dit --rm --network=laravel -p 8080:80 my/nginx
|
||||
|
||||
```docker
|
||||
# 注:生产环境推荐使用具体的版本标签,如 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/
|
||||
|
||||
@@ -195,7 +195,7 @@ RUN set -x ; cd /app \
|
||||
&& mkdir -p public \
|
||||
&& npm run production
|
||||
|
||||
FROM composer as composer
|
||||
FROM composer:2 as composer
|
||||
|
||||
COPY database/ /app/database/
|
||||
COPY composer.json composer.lock /app/
|
||||
@@ -229,7 +229,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
||||
&& chmod -R 777 storage \
|
||||
&& php artisan package:discover
|
||||
|
||||
FROM nginx:alpine as nginx
|
||||
FROM nginx:1.25-alpine as nginx
|
||||
|
||||
ARG LARAVEL_PATH=/app/laravel
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:alpine as frontend
|
||||
FROM node:20-alpine as frontend
|
||||
|
||||
COPY package.json /app/
|
||||
|
||||
@@ -13,7 +13,7 @@ RUN set -x ; cd /app \
|
||||
&& mkdir -p public \
|
||||
&& npm run production
|
||||
|
||||
FROM composer as composer
|
||||
FROM composer:2 as composer
|
||||
|
||||
COPY database/ /app/database/
|
||||
COPY composer.json /app/
|
||||
@@ -47,7 +47,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
||||
&& chmod -R 777 storage \
|
||||
&& php artisan package:discover
|
||||
|
||||
FROM nginx:alpine as nginx
|
||||
FROM nginx:1.25-alpine as nginx
|
||||
|
||||
ARG LARAVEL_PATH=/app/laravel
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ $ ETCDCTL_API=3 etcdctl member list
|
||||
$ ETCDCTL_API=3 etcdctl put testkey "hello world"
|
||||
OK
|
||||
|
||||
$ etcdctl get testkey
|
||||
$ ETCDCTL_API=3 etcdctl get testkey
|
||||
testkey
|
||||
hello world
|
||||
```
|
||||
@@ -96,5 +96,5 @@ $ brew install etcd
|
||||
|
||||
$ etcd
|
||||
|
||||
$ etcdctl member list
|
||||
$ ETCDCTL_API=3 etcdctl member list
|
||||
```
|
||||
|
||||
@@ -245,7 +245,7 @@ receivers:
|
||||
|
||||
```yaml
|
||||
alertmanager:
|
||||
image: prom/alertmanager:v0.27.0
|
||||
image: prom/alertmanager:v0.32.0
|
||||
volumes:
|
||||
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
|
||||
ports:
|
||||
|
||||
Reference in New Issue
Block a user