免费资源网 – https://freexyz.cn/
目录摘要一、环境准备二、配置registry私有仓库三、上传与下载镜像四、配置registry加载身份验证五、 docker registry 私有仓库查询、删除博文参考
摘要
随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库。目前常用的两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要注册的。私有仓库最常用的就是Registry、Harbor两种,那接下来详细介绍如何搭建registry私有仓库。
一、环境准备
两台CentOS7.4,一台为Docker私有仓库;另一台为Docker客户端,测试使用;
二、配置registry私有仓库
# <!–docker宿主机开启路由功能–> echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf <!–刷新配置–> sysctl -p net.ipv4.ip_forward = 1 <!–配置镜像加速–> vim /etc/docker/daemon.json <!–添加阿里云加速–> {“registry-mirrors”:[“https://6kx4zyno.mirror.aliyuncs.com”]} <!–重新启动docker服务–> systemctl reload docker <!–查找registry镜像–> docker search registry docker pull registry <!–registry镜像可以直接先pull下来,也可以不下载,根据自己情况而定–> docker run -d -p 5000:5000 –name registry –restart=always -v /opt/registry:/var/lib/registry registry <!–查看docker运行的容器–> docker ps <!–查看docker所有镜像–> docker images <!–配置docker服务支持registry服务–> vim /etc/docker/daemon.json {“registry-mirrors”:[“https://6kx4zyno.mirror.aliyuncs.com”], “insecure-registries”:[“192.168.100.10:5000”] <!–添加此行–> } <!–重新启动docker服务–> systemctl reload docker docker info三、上传与下载镜像
# 给镜像打标签 docker tag mysql 192.168.25.140:5000/mysql # 上传的镜像 docker push 192.168.25.140:5000/mysql <!–客户端安装docker服务,配置镜像加速–> <!–配置docker支持registry服务 –> vim /etc/docker/daemon.json {“registry-mirrors”:[“https://6kx4zyno.mirror.aliyuncs.com”], “insecure-registries”:[“192.168.100.10:5000”] <!–添加此行–> } <!–重新启动docker服务–> systemctl restart docker <!–客户端下载私有仓库中的镜像–> docker pull 192.168.25.140:5000/mysql docker images <!–查看镜像是否下载成功–>四、配置registry加载身份验证
但是现在存在一个问题,如果这也部署的话企业内部所有人员皆可访问我们的私有仓库,为了安全起见,接下来为registry添加一个身份验证,只有通过了身份验证才可以上传或者下载私有仓库中的镜像。
<!–安装加密工具httpd-tools–> yum -y install httpd-tools <!–创建存放验证密钥目录–> mkdir /opt/registry-auth <!–配置registry身份验证数据库–> <!–“-Bbn”参数解释:B强制密码加密;b在命令中输入密码,不提示输入密码;n不更新密钥文件–> htpasswd -Bbn bob pwd@123 > /opt/registry-auth/htpasswd <!–删除此服务器上的所有容器,接下来重新生成一个需要身份验证的私有仓库容器–> docker run -d -p 5000:5000 –restart=always -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry –name registry-auth -e “REGISTRY_AUTH=htpasswd” -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” -e “REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd” registry <!–重新运行一个支持身份验证的registry私有镜像仓库容器–> docker tag tomcat:latest 192.168.100.10:5000/image/tomcat:1.0 docker push 192.168.100.10:5000/image/tomcat:1.0 <!–测试不通过身份验证是否可以往私有仓库上传镜像–> <!–提示没有身份验证,上传不了–> no basic auth credentials <!–登录私有镜像仓库,通过身份验证即可上传–> docker login 192.168.100.10:5000 Username: bob <!–输入bob–> Password: <!–输入密码–> <!–再次上传镜像到私有仓库–> docker push 192.168.100.10:5000/image/tomcat:1.0 <!–docker客户端不通过身份验证直接下载私有仓库中的镜像直接被拒绝–> docker pull 192.168.100.10:5000/image/tomcat:1.0 Error response from daemon: Get http://192.168.100.10:5000/v2/image/tomcat/manifests/1.0: no basic auth credentials <!–登录私有仓库,通过身份验证–> docker login 192.168.100.10:5000 Username: bob <!–输入bob–> Password: <!–输入密码–> docker pull 192.168.100.10:5000/image/tomcat:1.0 <!–下载私有仓库中的镜像–> <!–查看docker客户端镜像–> docker images五、 docker registry 私有仓库查询、删除
修改tag (以hello-world为例)
拉取镜像 docker pull hello-world 修改镜像 docker tag hello-world hub.test.com:5000/hello-world:1.0 上传、删除、再下载镜像,删除后能下载成功 docker images docker push hub.test.com:5000/hello-world:1.0 docker rmi hub.test.com:5000/hello-world:1.0 docker images docker pull hub.test.com:5000/hello-world:1.0 docker images查看仓库镜像
curl hub.test.com:5000/v2/_catalogregistry开启删除
#查看默认配置 docker exec -it registry sh -c cat /etc/docker/registry/config.yml #开启删除(添加 delete: enabled: true) docker exec -it registry sh -c “sed -i /storage:/a delete: /etc/docker/registry/config.yml” docker exec -it registry sh -c “sed -i /delete:/a enabled: true /etc/docker/registry/config.yml” #重启 docker restart registry查询、删除镜像
#查询镜像 curl <仓库地址>/v2/_catalog #查询镜像tag(版本) curl <仓库地址>/v2/<镜像名>/tags/list #删除镜像API curl -I -X DELETE “<仓库地址>/v2/<镜像名>/manifests/<镜像digest_hash>” #获取镜像digest_hash curl <仓库地址>/v2/<镜像名>/manifests/<tag> –header “Accept: application/vnd.docker.distribution.manifest.v2+json”博文参考
https://www.jb51.net/article/187864.htm
免费资源网 – https://freexyz.cn/
© 版权声明
THE END
暂无评论内容