docker专用registry用户创build

我创build了在localhost:5000/v1上运行的私人dockerregistry,但它不提供身份validation,如何拥有用户名和密码,以便只有授权用户才能将图像推送到该docker。

我也不能列出所有在私人registry中的图像,所有文件说,运行下面的命令将列出它localhost:5000/v1/search但它给一个空白的JSON响应为:

 { "num_results": 0, "query": "", "results": [] } 

如何解决这个问题?

谢谢,亚希

对你的第一个问题的答案:你需要在registry之前使用类似nginx的东西来进行实际的密码authentication。 在Docker Registry Github仓库中有一个用于1.3.9之前的nginx和更高版本的 nginxconfiguration文件,用于用nginx包装registry; 有更多关于nginx维基上authenticationconfiguration的信息。

您可以使用htpasswd设置dockersregistry映像的login名。 但是,我不相信他们已经在这个图像中实现了searchfunction。 要创build一个用户,我有以下脚本:

 #!/bin/sh usage() { echo "$0 user"; exit 1; } if [ $# -ne 1 ]; then usage fi user=$1 cd `dirname $0` if [ ! -d "auth" ]; then mkdir -p auth fi chmod 666 auth/htpasswd docker run --rm -it \ -v `pwd`/auth:/auth \ --entrypoint htpasswd registry:2 -B /auth/htpasswd $user chmod 444 auth/htpasswd 

然后运行registry,我使用下面的脚本(来自同一个文件夹):

 #!/bin/sh cd `dirname $0` docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/certs:/certs:ro \ -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \ -v `pwd`/registry:/var/lib/registry \ -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \ -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \ registry:2 

请注意,我在上面的certs目录下也使用了TLS证书。 您可以使用openssl命令(与保护docker守护程序套接字的命令相同的命令)创build这些命令。