我正在运行自己的私有注册表,并希望通过纯HTTP而不是使用docker-registry python应用程序来传递图像数据。有没有办法配置nginx(或任何其他Web服务器)来提供注册表图像数据?
nginx可以比python docker-registry应用程序更好地扩展图像数据的传输。
答案 0 :(得分:1)
您可以生成描述图像图层数据所需的缺失文件(图像和标签)。这是一个简单的bash片段,用于生成缺少的信息。
#!/bin/bash
REGISTRY_SERVER=localhost:5000
REGISTRY_TOPDIR=/srv/docker-registry-storage/
touch $REGISTRY_TOPDIR/_ping
find $REGISTRY_TOPDIR -name _index_images -type f | while read F
do
D="$(dirname "$F")"
B="$(basename "$D")"
P="$(echo "$D" | sed "s,^$REGISTRY_TOPDIR,/v1/,")"
curl -s http://$REGISTRY_SERVER/$P/images > $D/images
curl -s http://$REGISTRY_SERVER/$P/tags > $D/tags
done
最后但同样重要的是,您需要访问$ REGISTRY_TOPDIR网站。运用 这看起来像nginx:
location /v1/ {
alias /srv/docker-registry-storage/;
autoindex on;
allow 127.0.0.1;
allow 10.0.0.0/8;
deny all;
}
最后,测试一下。请注意,如果您在路径参数中没有USER的情况下推入图像,它将插入" library"取而代之的是文件系统。
docker pull someserver.example.net/library/template