无法登录到托管在 swarm 集群中的注册表

时间:2021-03-05 10:11:48

标签: docker docker-swarm docker-registry

我有一个如下所示的 2 节点 swarm 集群

pic

在 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 节点运行

2 个答案:

答案 0 :(得分:0)

当您执行 docker login registry 时,docker 正在尝试在 Internet 上解析此名称,但该名称并不存在。
registry 只是您的容器名称。它不是域。

这里的解决方案是使用 localhost 而不是 registry :

docker login localhost:5000

答案 1 :(得分:0)

我忘记挂载 /auth 目录,在创建容器时使用此标志 -v "$(pwd)"/auth:/auth 修复了问题