(一)生成证书
1、mkdir /certs
2、cd /certs
3、生成自签名证书
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout registry.key -out registry.crt
录入证书信息:
CN
Guangdong
shenzhen
albb
Dev
10.1.2.3
123456@qq.com
4、添加centos系统对自签名证书的信任
cat ./registry.crt >> /etc/pki/tls/certs/ca-bundle.crt
查看证书内容
openssl x509 -noout -text -in server.crt
5、允许docker私有仓库支持ip地址方式的https访问
6、修改openssl.cnf,在Redhat7或者Centos系统中,文件所在位置是/etc/pki/tls/openssl.cnf。在其中的[ v3_ca]部分,添加subjectAltName选项:
[ v3_ca ] subjectAltName= IP:10.1.2.3
(二)新建docker私有仓库的用户abc
https://blog.csdn.net/shida_csdn/article/details/78435971#commentBox
(三)新建docker:用户验证+https传输
docker run -d -p 443:443 --restart=always --name=registry-https-abc -v /opt/registry-var/config/:/etc/docker/registry/ -v /opt/registry-var/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /opt/registry-var/:/var/lib/registry/ registry
(四)测试登录
浏览器访问:
https://10.1.2.3:443/v2 如果弹出提示用户名和密码的输入,证明搭建成功
================================================
以下方法不推荐,仅作参考。
================================================
1、创建密码文件(用于docker私有仓库的用户登录认证)
参考:
https://blog.csdn.net/shida_csdn/article/details/78435971#commentBox
2、创建证书文件(用于https的加密传输)
参考:
https://www.cnblogs.com/andy9468/p/10736214.html
3、创建私有仓库容器(加密和用户验证)
docker run -d -p 5000:5000 --restart=always --name registry-https5000account
-v /opt/registry-var/auth/:/auth/
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
-v /certs:/certs
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key
registry
以这句为准:
docker run -d -p 443:443 --restart=always --name=registry-https-abc -v /opt/registry-var/config/:/etc/docker/registry/ -v /opt/registry-var/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /opt/registry-var/:/var/lib/registry/ -v /certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key registry
说明:
运行registry并指定参数
包括了用户密码文件和CA书位置。
--restart=always 始终自动重启
--name registry-https5000account 指定容器的别名
-v /opt/registry-var/auth/:/auth/ 指定密码文件位置
-v /certs:/certs 指定证书位置
4、验证服务:
方法一:docker ps -a
方法二:docker login https://你的ip:5000/
参考:https://www.jianshu.com/p/0f8f86f5a961