docker registry私服搭建的方法
目前为止,docker官方的registry镜像分为两个版本,v2和v2以前的版本,我管它叫v1,v1使用python编写的,之后的v2用的go语言,而且它们的API也不一样,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服。
registry(v2)
搭建环境:172.16.71.52(contos7,docker1.8)
首先下载镜像
dockerpullresigtry:2
创建证书
mkdir-pcerts&&opensslreq\ -newkeyrsa:4096-nodes-sha256-keyoutcerts/domain.key\ -x509-days365-outcerts/domain.crt
复制domain.crt到指定目录,172.16.71.52.xip.io为私有仓库所在服务器的域名,5000为registry的端口号
cp/certs/domain.crt/etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt
建立登录认证
mkdirauth dockerrun--entrypointhtpasswdregistry:2-Bbn你的用户名你的密码>auth/htpasswd
重启docker
systemctlrestartdocker
run起来
dockerrun-d-p5000:5000--restart=always--nameregistry\ -v`pwd`/auth:/auth\ -e"REGISTRY_AUTH=htpasswd"\ -e"REGISTRY_AUTH_HTPASSWD_REALM=RegistryRealm"\ -eREGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd\ -v`pwd`/certs:/certs\ -eREGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt\ -eREGISTRY_HTTP_TLS_KEY=/certs/domain.key\ registry:2
先登录,再使用
dockerlogin172.16.71.52.xip.io:5000 dockertagredis172.16.71.52.xip.io:5000/redis dockerpush172.16.71.52.xip.io:5000/redis
检查下,image是否进入了我们搭建的私有仓库
#找到外部挂载的目录 dockerinspect--format{{'json.Mounts'}}registry #push进来的image都安静的躺在这里 cd/tmp/data/docker/registry/v2/repositories
以下是注意事项:
1.创建认证证书时commonname应该用registry所在机器的域名,本人用IP测试没有成功。
2.dockerrun之前确保5000端口没有被占用,启动成功以后用dockerlogs看下有没有报错
3.push和pull之前要dockerlogin一下
4.想要通过安全认证记得把生成的domain.crt复制到/etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt,其中172.16.71.52.xip.io为私服的域名,5000为registry的对外端口
5.v2的api变了,访问v1/search会报错404notfound,可以通过/v2/_catalog查看私有仓库的目录,v2的aip参见这里
参考
https://docs.docker.com/registry/deploying/
https://docs.docker.com/engine/reference/commandline/inspect/
https://docs.docker.com/registry/spec/api/
registry(V1)
V1版本的registry搭建起来比较费劲(也有可能我没有找到优雅的方法),在网上找了一篇用nginx做SSL和登录认证的博文,感谢博主,可移步这里查看(亲测可用)
搭建docker内网私服(docker-registrywithnginx&ssloncentos)
因为版本原因(docker1.8),在ssl认证上还需要把生成的根证书copy到docker指定目录(如搭建V2时描述的)
cp/etc/pki/CA/cacert.pem/etc/docker/certs.d/172.16.71.43.xip.io:5000/ca.crt
注意在其他主机访问私服时也要做以上操作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。