Docker New Retention Policy on 2020-08-13

ref: https://www.docker.com/pricing

Docker 在 2020/08/13 更新了 Docker Terms of Service,也一併更新了 Pricing Page,Docker Hub 即將開始對 docker pull 限制下載量。

Docker Update Rate Limit Policy on 2020-08-24 懶人包

大部分的人都注意到了 Retention Policy 的部分

ref: https://www.docker.com/pricing/retentionfaq

目前 Docker Hub 上存放了 15 PB 的 Docker Image,其中有 10 PB 是超過六個月完全無人使用的 (push/push) 。 4.5 PB 是由免費帳號 (Free Plan) 創建的 Image,都是只用一陣子的暫存 Image ,像是 CI Pipeline 用的。

在 2020-11-01 當天,超過六個以上沒有 push/pull 的 image,將被排入刪除清單。

  • 只有 Free plan 有 image retention
  • Pro, Team plan 不會受影響

更可怕的是 Download rate limit

比較令人擔心的反而是這個部分:

  • unauthenticated pulls will be rate limited to 100 per 6h
  • authenticated pulls will be rate limited to 200 per 6h

而且不是使用 image 當作單位,是 pull layer!這個限制將會顛覆目前所有現有的 CI/CD pipeline 及 kubernetes 的元件,不僅僅是要使用使用 docker hub login cretential 的問題,CI 中有使用 dockerhub image 的話,也必須支援 login credentials。

目前對策

以個人用的 Docker registry,我會建議轉移到 Gitlab Container Registry

  • Public git repo = Public docker registry
  • 不需要 docker login registry.gitlab.com 就可以 docker pull 公開的 image
  • 和 git repo 共用 10 GB storage
docker pull registry.gitlab.com/rammus.xu/docker-alpine:nginx-1.19.2
docker login registry.gitlab.com -u rammus.xu -p
docker pull nginx:1.19.2-alpine
docker tag nginx:1.19.2-alpine registry.gitlab.com/rammus.xu/docker-alpine:nginx-1.19.2
docker push registry.gitlab.com/rammus.xu/docker-alpine:nginx-1.19.2

企業用的話,如果原本就有使用 Cloud Platform,就繼續用各家的 Registry(GCR, ECR, ACR)。

Kubernetes 則是比較麻煩,大部分的 Controller 都有用到 Docker hub 的 image,如果要買 Docker Hub Plan 的話,則需要自己做 VM Template,裝入 docker hub cretential。

Reference

Communities