docker registry 私有仓库的搭建过程

 更新时间:2022年01月10日 15:46:58   作者:庄小焱  
这篇文章主要介绍了docker registry 私有仓库,私有仓库最常用的就是Registry、Harbor两种,那接下来详细介绍如何搭建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/_catalog

registry开启删除

#查看默认配置
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

安装docker registry - MartinEDM

到此这篇关于docker registry 私有仓库的文章就介绍到这了,更多相关docker registry 私有仓库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Docker部署Python Flask应用的完整教程

    使用Docker部署Python Flask应用的完整教程

    Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个独立的容器,实现快速部署和跨平台运行,本文将详细介绍如何使用Docker来部署Python Flask应用程序,帮助开发者更高效地构建和部署应用,需要的朋友可以参考下
    2024-06-06
  • docker volume删除卷的操作

    docker volume删除卷的操作

    这篇文章主要介绍了docker volume删除卷的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • kali下对Docker的详细安装教程

    kali下对Docker的详细安装教程

    这篇文章主要介绍了kali下对Docker的详细安装,Docker是渗透测试中必学不可的一个容器工具,在其中,我们能够快速创建、运行、测试以及部署应用程序,对kali安装docker相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • docker容器使用GPU方法实现

    docker容器使用GPU方法实现

    本文主要介绍了docker容器使用GPU方法实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • docker镜像下载到本地并导入其他服务器方式

    docker镜像下载到本地并导入其他服务器方式

    这篇文章主要介绍了docker镜像下载到本地并导入其他服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Docker中Dockerfile之容器中运行MyEclipse搭建的JavaWeb项目

    Docker中Dockerfile之容器中运行MyEclipse搭建的JavaWeb项目

    本篇文章主要介绍了Docker中Dockerfile之容器中运行MyEclipse搭建的JavaWeb项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Docker清理命令之如何删除所有的镜像和容器

    Docker清理命令之如何删除所有的镜像和容器

    这篇文章主要介绍了Docker清理命令之如何删除所有的镜像和容器问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Docker镜像下载的常见问题及解决办法

    Docker镜像下载的常见问题及解决办法

    在使用Docker时,用户常遇到下载镜像错误,如TLS握手超时、请求取消等,主要由网络状况、配置问题或DockerHub服务导致,本文就来介绍了一下几种解决方法,感兴趣的可以了解一下
    2024-10-10
  • Docker 容器安装 Dify的两种方法详解

    Docker 容器安装 Dify的两种方法详解

    该文章介绍了如何使用Docker容器在Windows上安装Dify,方法一通过拉取Dify镜像并运行容器,方法二通过克隆Dify源代码并使用DockerCompose启动容器,两种方法各有优缺点,选择哪种方法取决于具体需求,感兴趣的朋友跟随小编一起看看吧
    2025-02-02
  • cordon节点drain驱逐节点delete节点详解

    cordon节点drain驱逐节点delete节点详解

    这篇文章主要为大家介绍了cordon节点drain驱逐节点delete节点详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论