Pull-Through Cache Docker Registry实践
背景
容器在risc-v社区比较流行。这里介绍容器在研发环境的实践,能够单向拉取镜像运行,不能推送。
+------------------------------------+ +------------------------------+ +-----------+
| Upstream Docker | | Pull-Through Cache | | Client |
| Registry | | Docker Registry | | (host001) |
| (https://registry-1.docker.io) | -----> | (registry.icinfra.cn:5000) | ----> | |
+------------------------------------+ +------------------------------+ +-----------+
配置
Pull-through cache docker registry
根据 https://docs.docker.com/docker-hub/mirror/#run-a-registry-as-a-pull-through-cache 介绍,配置/etc/docker/registry/config.yml
文件里的proxy.remoteurl
为外部registry。
registry容器可以通过传入REGISTRY_PROXY_REMOTEURL环境变量来完成配置,命令如下:
podman run -d -p 5000:5000 --name registry-cache -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io registry:2
Client
在客户端侧配置registry地址,让podman或docker命令使用。
cat > ~/.config/containers/registries.conf <<EOF
[registries.insecure]
registries = ['registry.icinfra.cn:5000']
EOF
完毕。
附录
- https://distribution.github.io/distribution/about/configuration/ 与 https://distribution.github.io/distribution/recipes/mirror/ 提到,podman push到pull-through cache是不支持的。满足“禁止用户push”的需求。
- https://www.icinfra.cn/blog/2024/rootless-podman-and-nfs/ 容器镜像层不能放在NFS,用户数据可以通过-v映射NFS目录进去使用。
- https://www.redhat.com/sysadmin/rootless-podman-user-namespace-modes 运行 rootless容器 需要打开subordinate ID。
Enjoy Reading This Article?
Here are some more articles you might like to read next: