IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux企业级运维------>Docker(3)registry仓库和harbor仓库 -> 正文阅读

[系统运维]linux企业级运维------>Docker(3)registry仓库和harbor仓库

一、什么是Docker仓库

Docker
仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
Docker运行中使用的默认仓库是 Docker Hub 公共仓库。

在这里插入图片描述

Docker Hub

Docker Hub是Docker社区分享Docker镜像的网站/存储库。

上面有很多Docker镜像,例如:nginx官方镜像,你可以从Docker Hub上下载这些镜像,也可以在上面分享你自己的镜像。

Docker hub的官方站点是

https://hub.docker.com/
在这里插入图片描述

二、Registry的原理

一次docker pull 或 push背后发生的事情
在这里插入图片描述
index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。

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

index
负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
Web UI
元数据存储
认证服务
符号化
registry
是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
Registry Client
Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

情景A:
用户要获取并下载镜像。在这里插入图片描述用户发送请求到index来下载镜像,index相应并返回三个相关部分的信息:该镜像所在的registry,该镜像所包含的所有圈层的校验,以授权为目的的token。用户通过响应中返回的token和registry沟通。registry全权负责镜像,它存储基本的镜像和继承的层。registry收到token后与index沟通证实token是被授权通过的。index会发送true或false信号给registry,之后registry允许用户下载所需要的镜像资源。

情景B:
用户要推送镜像到registry中。
在这里插入图片描述用户发送带证书的请求到index要求分配库名,在成功认证,命名空间可用以及库名被分配后index响应并返回临时的token。用户要上传的镜像连带yoken被上传到registry中。registry向index验证token的正确性,在index验证之后开始读取推送流。该index然后更新由docker生成的镜像校验。

情景C:
用户要从index或registry中删除镜像。
在这里插入图片描述index接受来自Docker一个删除库的信号。如果index验证库成功,它将删除该库并返回一个临时的token。registry接收带有该token的删除的信号。registry与index核实该token核实成功后删除库以及相关信息,再通知有关删除的index,index再删除库的所有记录。

三、搭建私有仓库

1、搭建仓库

#清除不必要的容器
docker images | grep webserver | awk '{system("docker rmi "$1":"$2"")}'
docker pull registry
docker images registry
#运行registry容器并开放5000端口
docker run -d --name registry -v /opt/registry:/var/lib/registry -p 5000:5000 registry
docker ps
docker info
#上传镜像到本地仓库,本地镜像在命名时需要加上仓库的ip和端口
docker tag yakexi007/game2048:latest localhost:5000/yakexi007/game2048:latest
docker push localhost:5000/yakexi007/game2048
curl localhost:5000/v2/yakexi007/game2048/tags/list
curl http://localhost:5000/v2/_catalog

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述测试是否能够成功
在这里插入图片描述此仓库目前所有用户都可以访问,处于不安全状态

2、为Docker仓库添加证书加密功能

openssl11:链接:https://pan.baidu.com/s/1zqwTcyezTqss1Tm3J2_eQw
提取码:ud9z

#在真机中复制openssl11到server1
scp -r openssl11/ server1:
#在server1中
cd openssl11
ls---->openssl11-1.1.1g-3.el7.x86_64.rpm  openssl11-libs-1.1.1g-3.el7.x86_64.rpm
yum install openssl11-1.1.1g-3.el7.x86_64.rpm openssl11-libs-1.1.1g-3.el7.x86_64.rpm -y
#修改地址解析
vim /etc/hosts
----------------------
172.25.75.1 server1 reg.westos.org
----------------------
ping reg.westos.org

在这里插入图片描述

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

mkdir -p certs
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
----->CN-->Saanxi-->Xi'an-->westos-->linux-->reg.westos.org-->root@123.org
cd certs
ls---->westos.org.crt  westos.org.key
cd
docker rm -f registry#删除之前的容器
docker ps

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

#重建registry容器
docker run -d \
  --restart=always \
  --name 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 \
  -p 443:443 \
  registry
docker ps
#尝试上传镜像
docker tag nginx:latest reg.westos.org/nginx:latest
docker push reg.westos.org/nginx:latest#

在这里插入图片描述出现问题,证书是被不知名的ca签名的(因为是我们自建的证书,所以会有问题)
在这里插入图片描述

#拷贝证书到docker主机
cd /etc/docker/
mkdir certs.d
cd certs.d/
mkdir reg.westos.org
cd reg.westos.org/
cp ~/certs/westos.org.crt ca.crt
ls--->ca.crt
docker push reg.westos.org/nginx:latest#再次上传

因为使用的是自签证书,客户端要与私有仓库通信,那就必须建一个目录:/etc/docker/certs.d,在这个目录下建立签名的域名目录,然后把私有仓库的证书拷贝到这个目录即可。
在这里插入图片描述再次上传时上传成功
在这里插入图片描述

3、为镜像添加用户认证功能

#创建用户认证文件并安装相关支持软件
mkdir auth
cd auth/
yum provides */htpasswd
yum install -y httpd-tools-2.4.6-88.el7.x86_64

在这里插入图片描述

#添加用户
#注意在auth目录外创建
htpasswd -Bc auth/htpasswd admin#第一次创建时使用-Bc
htpasswd -B auth/htpasswd qwe#再次创建时使用-B
cat auth/htpasswd
#删除之前的容器并重建
docker ps
docker rm -f registry
#添加用户认证及密钥模块
docker run -d   -p 443:443 \
   --restart=always --name registry \
  -v "$(pwd)"/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
   -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 ps

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

4、docker主机认证

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

四、Harbor仓库

1、harbor仓库相关

什么是Harbor?

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

2、harbor仓库的安装和部署

docker-compose:https://github.com/docker/compose/releases
harbor-online-installer:https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-online-installer-v2.3.4.tgz
harbor:链接:https://pan.baidu.com/s/1lKFe4TiGP4LXZ_zg9gQFWg
提取码:91gd

wget https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-online-installer-v2.3.4.tgz
wget https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64

#在真机中复制harbor包给server1
scp harbor-offline-installer-v1.10.1.tgz server1:
scp docker-compose-Linux-x86_64-1.27.0 server1:
#server1中
#将二进制文件放入/usr/local/bin目录并赋予权限
mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#解压harbor安装包
du -h harbor-offline-installer-v1.10.1.tgz
tar zxf harbor-offline-installer-v1.10.1.tgz
cd harbor/
ls
vim harbor.yml
-----------------------------------------------
  5 hostname: reg.westos.org
 17   certificate: /data/certs/westos.org.crt
 18   private_key: /data/certs/westos.org.key
 27 harbor_admin_password: westos
------------------------------------------------

在这里插入图片描述

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

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

#拷贝证书目录到/data目录下
mkdir /data
cp ~/certs/ /data/ -r
cd /data/
ls--->certs
cd certs/
ls---->westos.org.crt  westos.org.key
cd /root/harbor/
./install.sh#使用脚本安装harbor
#查看harbor目录
ls---->docker-compose.yml
docker-compose start#必须在harbor目录下启动docker-compose

在这里插入图片描述在这里插入图片描述在这里插入图片描述测试:
在真机中进行域名解析
在这里插入图片描述在浏览器中访问server1ip
因为是自签证书浏览器不信任,点击advanced—>accept…
在这里插入图片描述在这里插入图片描述输入用户名和密码登陆
在这里插入图片描述在这里插入图片描述
在server1中登陆仓库并上传镜像
在这里插入图片描述在web界面中library仓库可以看到上传的nginx镜像
在这里插入图片描述在这里插入图片描述在server1中进行一些操作可以在web的日志中查看到操作记录
在这里插入图片描述在这里插入图片描述

3、harbor仓库的使用

(1)创建私有仓库

点击新建项目
在这里插入图片描述输入项目名称,不勾选公开级别的情况下项目为私有状态,点击确定
在这里插入图片描述
在这里插入图片描述

(2)创建用户

在这里插入图片描述在这里插入图片描述写入需要添加的用户
在这里插入图片描述
将创建的用户添加到仓库成员中
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(3)私有仓库上传和拉取镜像

登陆私有仓库
在这里插入图片描述向私有仓库中上传镜像

在这里插入图片描述拉取镜像
在这里插入图片描述在web界面的日志中可以查看到操作
在这里插入图片描述

4、harbor安全验证

(1)harbor的重新部署

关闭当前容器
在这里插入图片描述重新安装harbor

–with-notary:
镜像信任,Notary是Docker镜像的签名工具,用来保证镜像在pull,push和传输过程中的一致性和完整性,避免中间人攻击,避免非法的镜像更新和运行。
镜像信任功能能够保证镜像的安全,只有打了信任标签的镜像才能被拉取
–with-clair: 镜像安全扫描,Harbor与Clair集成,添加漏洞扫描功能。 默认在运行harbor时漏洞扫描是没有开启的,需要重新开启并添加参数
–with-chartmuseum: 支持chart仓库服务

在这里插入图片描述

(2)镜像安全扫描

在这里插入图片描述
在这里插入图片描述在仓库配置管理中设置自动扫描镜像,点击底下的保存键
在这里插入图片描述

(3)内容信任

启用内容信任功能,重新安装时注意先改回0再安装
在这里插入图片描述上传镜像时失败,因为我们需要根部部署证书
在这里插入图片描述
在这里插入图片描述再次进行镜像上传,可以看到签名成功并上传
在这里插入图片描述在web界面可以看到已签名
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:58:21  更:2022-03-16 22:58:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:24:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码