Docker 私有注册表:连接被拒绝

时间:2021-05-26 10:11:25

标签: docker docker-registry

无法连接到本地 docker 存储库。

这里是 docker compse 文件:

version: '3'
services:
  registry:
    restart: always
    image: registry:2
    container_name: registry
    ports:
    - "5000:5000"
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /home/user/auth/registry.password
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - ./data:/data

运行 docker login localhost:5000 时出现以下错误:

> Error response from daemon: Get http://localhost:5000/v2/: dial tcp [::1]:5000: connect: connection refused

注意:/home/user/auth/registry.password 文件存在

1 个答案:

答案 0 :(得分:0)

来自https://docs.docker.com/registry/deploying/#native-basic-auth

<块引用>

警告:您不能将身份验证与身份验证方案一起使用 以明文形式发送凭据。您必须首先配置 TLS 身份验证才能工作。

因此,要么安全身份验证,要么根本不进行身份验证。

如果您确实想要没有 TSL 的基本身份验证,您唯一的选择是使用前面的网络服务器,它可以做到这一点,并将请求代理到一个完全没有身份验证的普通注册表。请参阅 apachenginx 的示例,如果不需要,请删除所有 SSL 配置。 这可能看起来有点工作,但并不难,而且非常灵活。

另一种选择是使用 TSL,如果您的域还没有有效的证书,您可以 configure the registry with a Let's Encrypt certificate,或者您可以 set it up with a self-signed certificate(只有在您确定此注册表时才这样做)与外界隔绝)。