1 不需要认证 不需要https最简单的
不安全一般内网使用
docker run -id --name registry -p 5000:5000 -v /data/docker/registry:/var/lib/registry registry
/var/lib/registry 镜像仓库存储路径
docker默认使用https会报错,无法上传或者拉取镜像
需要添加 重启docker
vim /etc/docker/daemon.json
添加一行
{
"insecure-registries" : ["10.47.32.122:5000""]
}
## 10.47.32.122为私有仓库内网地址
不需要登录直接上传 先打tag ;docker tag nginx 10.47.32.122:5000/nginx ;格式必须为仓库地址加端口/镜像名称
docker push 10.47.32.122:5000/nginx 推送
docker pull 10.47.32.122:5000/nginx 拉取
2 需要认证登录(docker login) 不需要https
一般demo使用
生成密码 需要httpd-tools 包
htpasswd -bnBC 12 admin admin123 > /usr/local/reg/passwd
admin 用户名
admin123 密码
docker run -id --name registry -p 80:5000 -v /data/docker/registry:/var/lib/registry \
-v /usr/local/reg/:/auth -e "REGISTRY_AUTH=htpasswd" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd registry
REGISTRY_AUTH 表示使用htpsswd 认证
REGISTRY_AUTH_HTPASSWD_PATH 秘钥文件路径
最后还是需要添加 /etc/docker/daemon.json 否则docker login 会报错
tips
内网之间可以在/etc/hosts 添加IP 域名映射 通过域名登录推送镜像等操作
比如 在/etc/hosts 添加 10.47.32.122 lreg.io
/etc/docker/daemon.json 配置为 "insecure-registries" : ["lreg.io""]
登录 docker login -u admin -p admin123 lreg.io 不登录无法推送拉取镜像
打tag docker tag nginx lreg.io/nginx
docker push lreg.io/nginx 推送
docker pull lreg.io/nginx 拉取
容易踩坑的点
经过测试在/etc/hosts通过公网映射自定义域名无效,公网IP映射的域名必须是真实存在的否则连接会报403
3 需要认证登录(docker login) 需要https(证书)
最安全 可以开放在公网生产环境使用
如何签发证书可以查看我之前的文章
docker run -id --name registry -p 443:5000 -v /data/docker/registry:/var/lib/registry \
-v /usr/local/reg/:/auth -e "REGISTRY_AUTH=htpasswd" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/auth/reg.crt -e REGISTRY_HTTP_TLS_KEY=/auth/reg.key registry
REGISTRY_AUTH 表示使用htpsswd 认证
REGISTRY_AUTH_HTPASSWD_PATH 秘钥文件路径
REGISTRY_HTTP_TLS_CERTIFICATE 证书路径
REGISTRY_HTTP_TLS_KEY 证书私钥路径
如果是自签证书,docker会报错
解决办法还是在 /etc/docker/daemon.json 添加 insecure-registries 可以解决,我看网上资料说在/etc/docker/certs.d/添加ca证书进去可以解决经过本人测试无效
除非是正儿八经申请的证书不需要在/etc/docker/daemon.json添加;比如阿里云的镜像仓库就可以直接登录
第二个错误如果证书里面不包含你的镜像仓库IP docker会报,你的IP不在证书信息当中已无法登录解决办法还是在 /etc/docker/daemon.json 添加 insecure-registries 可以解决
也可以在签发证书把IP添加进去,如何操作可以查看我之前的文章