实现访问控制的最直接方法是通过基本身份验证,这与大多数 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 守护进程。
