1,创建账户密码
root@ubuntu:mkdir /opt/auth/htpasswd
root@ubuntu:htpasswd -Bbn test 123456 > /opt/auth/htpasswd
#查看有没成功
root@ubuntu:/opt# cat /opt/auth/htpasswd
test:$2y$05$esseBoqYVQoDh5j0NVioO.SIt1tZ69tlCWx0Lj4rinPa.wK3XBb8i
2,启动registry
docker run -d -p 5000:5000 -v /opt/auth/:/auth/ -v /opt/data/registry:/var/lib/registry --name register-auth --restart always -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
其中:
-v /opt/auth/:/auth/ #认证位置
-v /opt/data/registry:/var/lib/registry #仓储位置
--restart always #docker重启后自动启动
3,添加daemon配置,解决https访问问题
修改 /etc/docker/daemon.json 文件,添加 insecure-registries,如果没有创建该文件
{
"insecure-registries": ["192.168.1.105:5000"]
}
其中 192.168.1.105 是你当前docker服务器IP,5000是你启动的rejistry指定的端口
重启docker
systemctl daemon-reload
systemctl restart docker
*如果docker desktop访问仍然提示https问题,则在设置中也加入这个配置,然后重启
4,推送测试
docker tag nginx:alpine 192.168.1.105:5000/nginx:alpine1
docker push 192.168.1.105:5000/nginx:alpine1
The push refers to repository [192.168.1.105:5000/nginx]
419df8b60032: Preparing
0e835d02c1b5: Preparing
5ee3266a70bd: Preparing
3f87f0a06073: Preparing
1c9c1e42aafa: Preparing
8d3ac3489996: Preparing
no basic auth credentials
提示no basic auth credentials,需要登录后再推送
docker login 192.168.1.105:5000
Username: test
Password:
Login Succeeded
重新推送
docker push 192.168.1.105:5000/nginx:alpine1
The push refers to repository [192.168.1.105:5000/nginx]
419df8b60032: Layer already exists
0e835d02c1b5: Layer already exists
5ee3266a70bd: Layer already exists
3f87f0a06073: Layer already exists
1c9c1e42aafa: Layer already exists
8d3ac3489996: Layer already exists
alpine1: digest: sha256:544ba2bfe312bf2b13278495347bb9381ec342e630bcc8929af124f1291784bb size: 1568
5,启动可视化UI
docker run -d -e ENV_DOCKER_REGISTRY_HOST=192.168.1.105 -e ENV_DOCKER_REGISTRY_PORT=5000 -p 5002:80 konradkleine/docker-registry-frontend:v2
打开链接:http://192.168.1.105:5001/#/init/admin 输入rejistry的账户密码
查看推送的仓储
*开源UI有很多种,你也可以使用其它UI例如portainer
官方地址:Docker Registry | Docker Documentation
更多信息请关注公众号: