如何解决带有前缀的 Docker Registry 有 Docker 登录问题
我刚刚在我的个人服务器上部署了一个 Docker Registry。我按照主要 Docker documentation 中的说明设置了 TLS 和基本身份验证。
我可以通过指定 https://{HOST}/registry/v2
通过 URL 访问存储库。它提示基本身份验证请求并返回一个空的 JSON {}
。
不幸的是,当我尝试使用以下命令通过 Docker CLI 登录到注册表时
$ docker login https://{HOST}/registry/
它提示用户和密码的请求,但之后它返回
Error response from daemon: login attempt to https://{HOST}/v2/ failed with status: 404 Not Found
完全忽略注册表有前缀并且不在主机的根目录中的事实。
你知道如何解决这个问题吗?
这是我用于部署的主要文件。
部署配置文件
docker-compose.yaml
version: '3.5'
services:
registry:
restart: always
image: registry:2
ports:
- 5000:5000
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_HTTP_PREFIX: /registry/
volumes:
- ./data:/var/lib/registry
- ./auth:/auth
nginx 位置配置
location /registry/ {
# Do not allow connections from docker 1.5 and earlier
# docker pre-1.6.0 did not properly set the user agent on ping,catch "Go *" user agents
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
proxy_pass http://localhost:5000;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。