平凉市建设局门户网站,整合营销名词解释,wordpress主题_,京东网站建设的目的文章目录一、docker仓库二、仓库Registry工作原理三、搭建本地私有仓库四、配置镜像加速器五、私有仓库的加密认证1.非加密下上传拉取2.insecure registry3.仓库加密4.仓库认证一、docker仓库 什么是仓库 Docker 仓库是用来包含镜像的位置#xff0c;Docker提供一个注册服务器…
文章目录一、docker仓库二、仓库Registry工作原理三、搭建本地私有仓库四、配置镜像加速器五、私有仓库的加密认证1.非加密下上传拉取2.insecure registry3.仓库加密4.仓库认证一、docker仓库 什么是仓库 Docker 仓库是用来包含镜像的位置Docker提供一个注册服务器Register来保存多个仓库每个仓库又可以包含多个具备不同tag的镜像。 Docker运行中使用的默认仓库是 Docker Hub 公共仓库。 二、仓库Registry工作原理 一次docker pull 或 push背后发生的事情: index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候首先会去index服务上做认证然后查找镜像所在的registry的地址并放回给docker客户端docker客户端再从registry下载镜像在下载过程中 registry会去index校验客户端token的合法性不同镜像可以保存在不同的registry服务上其索引信息都放在index服务上。 Docker Registry有三个角色分别是index、registry和registry client。 index 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。registry 是镜像和图表的仓库它不具有本地数据库以及不提供用户认证通过Index Auth service的Token的方式进行认证。Registry Client Docker充当registry客户端来维护推送和拉取以及客户端的授权。 情景A用户要获取并下载镜像。 首先客户端向index请求下载镜像index会返回镜像所在的仓库地址和token给客户端客户端持有token直接访问仓库此时仓库会向index校验tokenindex再向仓库返回是否合法若是合法仓库直接将镜像传输给客户端。 情景B用户要推送镜像到registry中 客户端向index请求上传index给客户端一个token然后客户端访问仓库仓库校验token校验完成后客户端给仓库上传镜像。 情景C用户要从index或registry中删除镜像。 客户端向index请求删除index向客户端返回允许delete和token然后客户端访问仓库校验完成后在仓库中删除仓库完成删除后和index之间同步信息。 三、搭建本地私有仓库
在生产环境中有些环境下可能是不被允许连接外网的所以此时我们就需要搭建一个本地的私有仓库。我们也可以在docker官网创建一个账号可以把我们本地的镜像上传到官网Docker Hub 创建账户后在本机登陆刚刚创建的账号 用户的登录信息将会保存到用户主目录下 .docker 中这样就可以保证后面我们不需要频繁的login 在网页端可以创建仓库 在本机 先更改tag和仓库信息然后再push上传 可以看到在我们刚刚创建的仓库里面已经有我们上传的镜像了 我们也可以登出docker
四、配置镜像加速器
首先进入aliyun官网并登陆自己的账号登陆进去后进入右上角控制台 选择容器镜像服务中的镜像加速器: 可以看到我们的加速器地址已经生效了
五、私有仓库的加密认证
官方文档https://docs.docker.com/registry/deploying
1.非加密下上传拉取 拉取registry镜像 [rootserver1 ~]# docker pull registry 运行registry仓库 [rootserver1 docker]# docker run -d -p 5000:5000 --restartalways --name registry registry –restartalways : 让此容器随着docker引擎自启动 现在我们在私有仓库里上传镜像 [rootserver1 ~]# docker tag nginx:latest localhost:5000/nginx:latest [rootserver1 ~]# docker push localhost:5000/nginx 访问私有仓库发现已经上传 2.insecure registry
配置使用非加密端口
[rootserver2 ~]# vim /etc/docker/daemon.json
{insecure-registries : [http://192.168.117.17:5000]
}[rootserver2 docker]# systemctl restart docker
拉取镜像
[rootserver2 docker]# docker pull 192.168.117.17:5000/nginx注既然是仓库就要支持远程拉取的功能从本机拉取可以用非加密的方式远程主机拉取必须要加密的方式。先走加密再开认证
3.仓库加密
首先我们先下载加密的软件包由于依赖性两个一起装 添加域名解析 构建加密key和cert
[rootserver7 ~]# mkdir certs
[rootserver7 ~]# openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -addext subjectAltName DNS:reg.westos.org -x509 -days 365 -out certs/westos.org.crt[rootserver7 ~]# docker run -d -p 443:443 --restartalways --name registry -v /opt/registry:/var/lib/registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY/certs/westos.org.key registry 部署客户端证书不然会报错 [rootserver7 ~]# docker tag nginx:latest reg.westos.org/nginx:latest [rootserver7 ~]# docker push reg.westos.org/nginx:latest The push refers to repository [reg.westos.org/nginx] Get “https://reg.westos.org/v2/”: x509: certificate signed by unknown authority [rootserver7 ~]# mkdir -p /etc/docker/certs.d/reg.westos.org/ [rootserver7 ~]# cp /root/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
验证 [rootserver1 ~]# docker push reg.westos.org/nginx:latest [rootserver1 reg.westos.org]# curl -k https://reg.westos.org/v2/_catalog {“repositories”:[“nginx”]} 4.仓库认证
我们可以在此基础上加上认证功能 安装httpd 工具包使用htpasswd设置用户和密码 [rootserver7 ~]# yum install -y httpd-tools [rootserver7 ~]# mkdir auth [rootserver7 ~]# htpasswd -Bc auth/htpasswd admin New password: Re-type new password: Adding password for user admin 第二次添加不要加“-c”选项不然会覆盖 [rootserver7 ~]# htpasswd -B auth/htpasswd gong New password: Re-type new password: Adding password for user wxh [rootserver7 ~]# cat auth/htpasswd admin:$2y050505cDNeojySdawWHWkSYcjX0.50ZzU3GvzaPWhhZ5opzCAsKpucxdaj2 gong:$2y$05$0HcL0fKskEaNa6xMx8PIdO94syd/qEGCfHKDK5Yt7ZsNYhnjgJTIW 将之前的容器删除掉加上一些设置使用用户和密码的参数再开启容器 [rootserver7 ~]# docker rm -f registry [rootserver7 ~]# docker run -d -p 443:443 --restartalways --name registry -v /opt/registry:/var/lib/registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY/certs/westos.org.key -v /root/auth:/auth -e “REGISTRY_AUTHhtpasswd” -e “REGISTRY_AUTH_HTPASSWD_REALMRegistry Realm” -e REGISTRY_AUTH_HTPASSWD_PATH/auth/htpasswd registry 登录仓库不然无法上传下载
[rootserver1 ~]# docker login reg.westos.org[rootserver1 ~]# cat .docker/config.json
{auths: {reg.westos.org: {auth: YWRtaW46d2VzdG9z}}
}验证 [rootserver7 ~]# docker tag busybox:latest reg.westos.org/busybox:latest [rootserver7 ~]# docker push reg.westos.org/busybox:latest [rootserver7 ~]# curl -k https://reg.westos.org/v2/_catalog -u admin:westos {“repositories”:[“busybox”,“nginx”]} 登出 [rootserver7 ~]# docker logout reg.westos.org server8验证gong用户登录 首先server8上移除非安全仓库设置 [rootserver8 ~]# cd /etc/docker/ [rootserver8 docker]# mv daemon.json /mnt/ [rootserver8 docker]# systemctl restart docker 加解析 vim /etc/hosts 拷贝证书 [rootserver7 ~]# cd /etc/docker/ [rootserver7 ~]# scp -r certs.d/ server8:/etc/docker/ 登录远程仓库 [rootserver8 docker]# docker login reg.westos.org 拉取镜像 [rootserver8 docker]# docker pull reg.westos.org/busybox 登出