DockerRegistry搭建私有仓库证书认证用户登录认证

Posted dezasseis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DockerRegistry搭建私有仓库证书认证用户登录认证相关的知识,希望对你有一定的参考价值。

一、Docker Registry工作原理

02_Docker Registry角色

Docker Registry有三个角色,分别是index、registry和registry client。

index

  • 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
  • Web UI
  • 元数据存储
  • 认证服务
  • 符号化

registry

  • 是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。

Registry Client

  • Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

01_Docker Registry工作原理

工作原理

  • index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。

在这里插入图片描述

  • 用户要获取并下载镜像
    -
  • 用户要推送镜像到registry中

在这里插入图片描述
用户要从index或registry中删除镜像
在这里插入图片描述

二、registry搭建私有仓库

01_搭建registry仓库

  • 拉取官方registry镜像
    docker pull registry

在这里插入图片描述

  • 搭建仓库
docker run -d --name registry \\ #-d:打入后台
> -p 5000:5000 \\ #-p:端口映射
> -v /opt/registry:/var/lib/registry \\ #-v:挂载
> registry

在这里插入图片描述在这里插入图片描述

02_上传镜像并拉取

server1端上传镜像

#创建
docker tag webserver:v1 localhost:5000/webserver:latest
#上传镜像到本地仓库
docker push localhost:5000/webserver
  • 搜索上传本地仓库的镜像
    curl localhost:5000/v2/_catalog
    在这里插入图片描述
    server2端拉取镜像
  • vim /etc/docker/daemon.json:首先从设置好的私有仓库读取
{
  "insecure-registries" : ["192.168.17.1:5000"]
}
  • systemctl reload docker
  • docker pull 192.168.17.1:5000/webserver:拉取
当不想读取私有仓库时删除此文件,重启!
rm -fr /etc/docker/daemon.json 
systemctl reload docker

三、registry证书认证

01_生成认证证书

  • 制作证书
    mkdir -p certs
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt
    在这里插入图片描述
  • 设置解析
vim /etc/hosts
172.25.2.1    server1 reg.westos.org
  • 复制证书
#创建的目录名称是制作证书时填写的server name
mkdir -p /etc/docker/certs.d/reg.westos.org/
cp certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
  • 搭建仓库
docker run -d --name registry -p 443:443 \\ #映射端口
> -v /opt/registry/:/var/lib/registry \\ #挂载的仓库目录
> -v "$(pwd)"/certs:/certs \\ #挂载证书
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \\ #仓库主机
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \\ #证书位置(挂载的)
> -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \\ #私钥位置
> registry
  • 上传
    docker tag yakexi007/game2048:latest reg.westos.org/game2048:latest
    docker push reg.westos.org/game2048:latest

  • 搜索上传本地仓库的镜像
    curl -k https://172.25.2.1/v2/_catalog

02_远程测试

server2:172.25.2.2

  • 删除私有仓库读取方法
    rm -fr /etc/docker/daemon.json
    systemctl reload docker
  • 解析
    vim /etc/host
172.25.2.1	server1	reg.westos.org
  • 拷贝证书
    mkdir -p /etc/docker/certs.d/reg.westos.org/
    scp server1:/etc/docker/certs.d/reg.westos.org/ca.crt /etc/docker/certs.d/reg.westos.org/
  • 拉取镜像
    docker pull reg.westos.org/game2048

四、registry用户登录认证

01_htpasswd创建登陆仓库

  • 安装
    yum install -y htpasswd httpd-tools

  • 创建存储目录
    mkdir auth

  • 添加用户
    htpasswd -B -c auth/htpasswd sl
    htpasswd -B auth/htpasswd admin:再次创建用户不加-c

    搭建仓库

docker run -d --name registry -p 443:443 \\
> -v /opt/registry/:/var/lib/registry \\
> -v "$(pwd)"/certs:/certs \\
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \\
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \\
> -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \\
> -v "$(pwd)"/auth:/auth \\
> -e "REGISTRY_AUTH=htpasswd" \\
> -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \\
> -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \\
> registry
  • 上传镜像

docker login reg.westos.org登录
在这里插入图片描述
docker tag busybox:latest reg.westos.org/busybox:latest
docker push reg.westos.org/busybox上传

02_远端测试

server2:172.25.2.2

添加解析
vim /etc/host

172.25.2.1	server1	reg.westos.org

登录
docker login reg.westos.org
在这里插入图片描述

docker pull reg.westos.org/busybox

以上是关于DockerRegistry搭建私有仓库证书认证用户登录认证的主要内容,如果未能解决你的问题,请参考以下文章

Docker Registry部署镜像私有仓库及鉴权认证

Docker私有仓库Registry认证搭建

Docker Registry Server 搭建,配置免费HTTPS证书,及拥有权限认证TLS 的私有仓库

Docker 私有仓库高级配置

10.部署私有 docker registry

搭建docker私有仓库(用户认证web管理)