搭建docker registry私有仓库并配置用户认证
2021-03-18 本文已影响0人
道听真说
搭建docker registry私有仓库并配置用户认证
在工作过程中,有时候会碰到需要把docker镜像放到另外一台机器上运行,提交到公网的docker hub太慢,如果每次导出文件传输再导入又太麻烦,还不方便进行版本控制、自动部署等操作。于是docker官方提供了一套简单的实现方案,就是Registry镜像。
docker-registry.png话不多说,现在开始一步一步搭建私有docker仓库。
服务器IP:192.168.1.33
-
首先拉取镜像,执行一下命令:
docker pull registry
-
为了让数据持久化避免丢失,我们可以创建存储卷或者直接映射到宿主机目录。
docker create volume registry_data
docker run -d --restart always --name registry -p 5000:5000 -v registry_data:/var/lib/registry registry
或者映射到宿主机:
docker run -d --restart always --name registry -p 5000:5000 -v /data/registry:/var/lib/registry registry
查看私有仓库:
curl -XGET 127.0.0.1:5000/v2/_catalog
查看镜像版本列表
curl -XGET 127.0.0.1:5000/v2/image_name/tags/list
-
push镜像到私有仓库
docker tag myapp 192.168.1.33:5000/myapp
docker push 192.168.1.33:5000/myapp
-
其他机器配置连接私有仓库
每台机器 docker 私有仓库配置vi /etc/docker/daemon.json写入以下内容:
{
"insecure-registries": [
"172.16.77.71:5000"
]
}
然后重启docker
-
设置私有仓库的用户认证
私有仓库搭建以后其他所有客户端均可以push、pull, docker官方提供认证方法对docker仓库进行权限保护
删除原启动的docker容器
docker stop docker-hub
docker rm docker-hub
创建保存账号密码的文件
mkdir /opt/data/auth
docker run --entrypoint htpasswd registry -Bbn username userpasswd > auth/htpasswd
重新启动容器
docker run -d -p 5000:5000 --restart=always --name registry \
-v registry_data:/var/lib/registry \
-v /opt/data/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry
现在客户端再pull、push会提示报错,无法提交。需要登录私有仓库
登录:
docker login -u username -p userpasswd 192.168.1.33:5000
退出:
docker logout 192.168.1.33:5000
至此,一个带认证的docker镜像仓库搭建完成了。
微信、知乎、简书、CSDN等平台搜索“道听真说”,点点关注不迷路!
如果本文对你有一点点帮助,请点个赞支持一下,谢谢啦❤️
近期更新文章:
为什么我的数据库那么慢,教你提升10倍MySQL性能