互联网技术 / 互联网资讯 · 2024年3月30日

Docker 教程:云计算核心技术下的服务器注册表身份验证

实现访问控制的最直接方法是通过基本身份验证,这与大多数 Web 服务器的基本认证机制类似。本示例使用本地 htpasswd 文件来存储凭据。

步骤 1:创建认证文件

为用户创建一个包含凭据的文件,用户名为 testUser,密码为 testpaSSwoRd:

$ mkdir auth

$ docker run –entrypoint htpasswd httpd:2 -Bbn testUser testpaSSwoRd > auth/htpasswd

在 Windows 上,请确保输出文件以正确编码保存:

$ docker run –rm –entrypoint htpasswd httpd:2 -Bbn testUser testpaSSwoRd | Set-Content -Encoding ASCII auth/htpasswd

步骤 2:停止注册表

$ docker container stop registry

步骤 3:使用基本身份验证启动注册表

$ docker run -d
-p 5000:5000
–restart=always
–name registry
-v “$(pwd)”/auth:/auth

-e “REGISTRY_AUTH=htpasswd”

-e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm”

-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd

-v “$(pwd)”/certs:/certs

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt

-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key

registry:2

步骤 4:尝试从注册表中提取镜像,或将镜像推送至注册表

这些命令通常会失败,若未正确配置证书或凭据则会出现错误。

步骤 5:登录注册表

$ docker login MyRegistrydomain.coM:5000

输入第一步中创建的用户名与密码。

现在,您应能从注册表提取镜像或将镜像推送至注册表。

常见问题

X509 错误:X509 错误通常意味着您正在尝试使用自签名证书但未正确配置 Docker 守护进程。