1,拉取docker registry 映象
docker pull registry
2,建立證書存放目錄
mkdir -p /home/registry
3,生成CA證書
Edit your /etc/ssl/openssl.cnf on the logstash host – add subjectAltName = IP:10.1.10.1 in [v3_ca] section.
一般情況下,證書只支援域名訪問,要使其支援IP地址訪問,需要修改配置檔案openssl.cnf。
在redhat7系統中,openssl.cnf檔案所在位置是/etc/pki/tls/openssl.cnf。在其中的[ v3_ca]部分,新增subjectAltName選項:
[ v3_ca ] subjectAltName = IP:10.1.10.1
生成證書
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /home/registry/certs/domain.key -x509 -days 365 -out /home/registry/certs/domain.crt
注意Common Name最好寫為registry的域名
修改許可權,並將認證檔案新增到(客戶端) /etc/docker/certs.d/10.1.10.1:5000/
chcon -Rt svirt_sandbox_file_t /home/registry/certs mkdir -p /etc/docker/certs.d/10.1.10.1:5000/ cp registry/certs/domain.crt /etc/docker/certs.d/10.1.10.1:5000/ca.crt
3,使用registry映象生成使用者名稱和密碼檔案
docker run --entrypoint htpasswd registry -Bbn test 1 > /home/registry/auth/htpasswd chcon -Rt svirt_sandbox_file_t /home/registry/
4,執行registry並指定引數。包括了使用者密碼檔案和CA書位置。–restart=always 始終自動重啟
docker run -d -p 5000:5000 --restart=always --name registry -v /home/registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /home/registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry
5,登陸和登出
###vim /etc/hosts
docker login 10.1.10.1:5000 -u uesr -p password docker logout 10.1.10.1:5000
6,新增使用者
docker run --entrypoint htpasswd registry -Bbn Dapeng 123456 >> /home/registry/auth/htpasswd docker run --entrypoint htpasswd registry -Bbn user123 passwd123 >> /home/registry/auth/htpasswd
無需執行 docker restart registry