我有一个如下所示的 2 节点 swarm 集群
在 Swarm 上,我创建了一个具有基本身份验证的 registry
容器,如下所示
$ mkdir auth
$ docker run \
--entrypoint htpasswd \
registry:2.6.2 -Bbn admin admin > auth/htpasswd
$ docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=basic-realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:2.6.2
现在,当我尝试登录注册表时,出现以下错误
$ docker login registry
Username: admin
Password: admin
Error response from daemon: Get https://registry/v2/: dial tcp: lookup registry on 10.0.2.3:53: server misbehaving
我关注了 this github 链接并将 nameserver 10.0.2.3:53
中的 /etc/resolv.conf
更新为 nameserver 8.8.8.8
但它没有解决问题
$ docker login registry
Username: admin
Password: admin
Error response from daemon: Get https://registry/v2/: dial tcp: lookup registry on 8.8.8.8:53: no such host
我也尝试用 /etc/hosts
更新 8.8.8.8
但同样的错误
注意:所有命令都从 swarm manager 节点运行
答案 0 :(得分:0)
当您执行 docker login registry
时,docker 正在尝试在 Internet 上解析此名称,但该名称并不存在。
registry
只是您的容器名称。它不是域。
这里的解决方案是使用 localhost
而不是 registry
:
docker login localhost:5000
答案 1 :(得分:0)
我忘记挂载 /auth
目录,在创建容器时使用此标志 -v "$(pwd)"/auth:/auth
修复了问题