2014-09-12 106 views
0

我已創建我的私人碼頭註冊表運行localhost:5000/v1,但它不提供身份驗證,如何擁有用戶名和密碼,以便只有授權用戶可以將圖像推送到它。碼頭私人註冊表用戶創建

我也無法列出所有存在於私人註冊表中的圖像,所有的文件說運行以下命令將列出它localhost:5000/v1/search但它提供了一個空白的JSON響應爲:

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

如何解決這個問題?

感謝, 佳日

回答

1

的回答你的第一個問題:你需要使用類似nginx在註冊表的前面做實際的密碼驗證。在Docker Registry Github repo中有pre-1.3.9 nginxlater versions的示例nginx配置文件,用於用nginx包裝註冊表;有關於authentication configuration on the nginx wiki的更多信息。

+0

嗨,謝謝你的迴應,我看了一下我的私人註冊表中的nginx.conf文件。這對身份驗證有什麼幫助?我嘗試通過「docker login <註冊表URL>」創建用戶帳戶,它允許我創建帳戶,但無法使用它,因爲無需使用任何用戶名和密碼即可推拉工作。如果你能提供幫助,會很棒。 – priyank 2014-09-18 09:12:47

0

您可以使用htpasswd設置docker註冊表映像的登錄。但是,我不相信他們已經在這張圖片中實現了搜索功能。要創建一個用戶,我有以下腳本:

#!/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 

然後運行註冊表,我用下面的腳本(來自同一文件夾):

#!/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 

請注意,我還使用TLS證書位於certs目錄下的上述證書中。您可以使用openssl命令創建這些命令(與保護docker守護程序套接字的命令相同)。