当前位置:   article > 正文

docker容器三之docker仓库(hub、registry和harbor)_dockerhub

dockerhub

docker仓库介绍

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

docker公有仓库和私有仓库的区别

  • 公有仓库:Docker官方提供一个公共仓库,称为Docker Hub。任何人都可以在Docker Hub上创建帐户,并在其中存储和共享Docker镜像。
  • 私有仓库:私有仓库是指由用户自己搭建、管理和维护的Docker仓库,可以自己选择存储位置和数据安全性,也可以和其他项目无缝集成。

docker hub

docker hub介绍

docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
在这里插入图片描述

docker hub公共仓库使用

docker hub官网

1.首先在https://cloud.docker.com/网站注册一个账号

2.在docker hub上新建一个公共仓库

3.登录docker hub
docker login

4.上传镜像
docker images
docker tag kaminskypavel/mario:latest lyueyue/mario:latest
docker push lyueyue/mario:latest

5.在浏览器上查看
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

docker仓库 首先注册一个账号
在这里插入图片描述
在这里插入图片描述
创建一个公共仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

私有仓库搭建(registry)

为什么需要搭建私有仓库

registry部署官网

  • docker hub虽然方便,但是还是有限制
    (1)需要internet连接,速度慢
    (2)所有人都可以访问
    (3)由于安全原因企业不允许将镜像放到外网
  • 好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库。

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客户端来维护推送和拉取,以及客户端的授权。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

私有仓库部署

1.下载registry镜像
docker pull registry

2.运行registry容器
docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry

3.给镜像打标签(本地镜像在命名时需要加上仓库的ip和端口)
docker tag nginx:latest localhost:5000/nginx:latest

4.上传镜像至私有仓库
docker push localhost:5000/nginx:latest

5.测试
cd /opt/registry
ls
curl localhost:5000/v2/_catalog
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

现在搭建私有仓库
在这里插入图片描述/opt/registry目录不存在也没有关系
在这里插入图片描述

私有仓库部署(添加证书加密功能)

准备工作
设置域名解析
1.生成证书(域名www.lyueyue.org要求在主机上有解析)
mkdir -p certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /root/certs/www.lyueyue.org.key -x509 -days 365 \
-out /root/certs/www.lyueyue.org.crt

2.停止运行中的registry或者直接删除
docker container stop registry 或者 docker rm registry

3.重建registry
docker run -d --restart=always --name registry \
-p 443:443 \
-v /opt/registry:/var/lib/registry \
-v /root/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/www.lyueyue.org.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/www.lyueyue.org.key registry

4.查看是否重建成功
docker port registry

5.拷贝证书到docker主机,不然无法上传下载。
mkdir -p /etc/docker/certs.d/www.lyueyue.org/ 
cp /root/certs/www.lyueyue.org.crt /etc/docker/certs.d/www.lyueyue.org/ca.crt
systemctl daemon-reload
systemctl restart docker

6.上传镜像
docker pull nginx:latest
docker tag nginx:latest www.lyueyue.org/nginx:latest
docker push www.lyueyue.org/nginx:latest
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

搭建私有仓库的步骤:
(1)在hosts文件里设置域名解析
在这里插入图片描述
(2)生成自签名证书以及密钥
在这里插入图片描述
在这里插入图片描述
(3)重建registry容器
如果原来有registry容器的话先停掉或删除原有的再进行重建
可以查看端口看是否重建成功

在这里插入图片描述
(4)拷贝证书到docker主机
在这里插入图片描述
(5)上传镜像
在这里插入图片描述

私有仓库部署(添加用户认证功能)

1.安装工具
yum install -y httpd-tools

2.建立目录
mkdir /root/auth
cd /root/auth

3.生成用户密码文件
htpasswd -B -c /root/auth/htpasswd yueyue
htpasswd -B -c /root/auth/htpasswd admin

4.重建registry
docker rm -f registry 
docker run -d --name registry \
-p 443:443 \
-v /opt/registry:/var/lib/registry \
-v "$(pwd)"/certs:/certs \
-v "$(pwd)"/auth:/auth \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/www.lyueyue.org.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/www.lyueyue.org.key \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

5.测试(此时不能上传和下载镜像)
docker push www.lyueyue.org/nginx:latest

6.登录仓库(这次使用yueyue登录)
docker login www.lyueyue.org

7.再次测试
docker push www.lyueyue.org/nginx:latest
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

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

harbor仓库

harbor仓库介绍

  • Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
  • harbor使用Docker-compose快速部署

补充:为什么有了registry还需要harbor?
1、提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2、提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3、支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。

harbor仓库部署(基础)

habor下载地址

首先清理环境
docker rm -f registry 
cd .docker/
rm -fr config.json
1.解压harbor包
tar zxf harbor-offline-installer-v1.10.1.tgz 

2.修改habor配置文件
cd harbor
vim harbor.yml

3.安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

4.安装habor
./install.sh  --help
./install.sh 
--with-notary                      #签名模块
--with-clair                       #扫描模块
--with-chartmuseum                 #K8S中用于软件包管理 
./install.sh --with-clair --with-notary --with-chartmuseum

4.查看安装情况
docker-compose ps

5.本地登录
docker login www.lyueyue.org

6.在本机测试
docker images
docker tag nginx:latest www.lyueyue.org/library/nginx:latest
docker push www.lyueyue.org/library/nginx:latest

7.配置别的虚拟机,并测试
scp /root/certs/www.lyueyue.org.crt server2:/etc/docker/certs.d/www.lyueyue.org/ca.crt
scp /root/certs/www.lyueyue.org.crt server3:/etc/docker/certs.d/www.lyueyue.org/ca.crt
ssh server2 systemctl restart docker
ssh server3 systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上传镜像测试,上传成功。
在这里插入图片描述
在这里插入图片描述
此时在server2上无法拉取镜像
在这里插入图片描述
给server2和server3配置证书之后
在这里插入图片描述
发现可以正常拉取
在这里插入图片描述

harbor仓库部署(添加用户及项目)

1.添加用户

2.添加项目

3.给新建项目添加用户
  • 1
  • 2
  • 3
  • 4
  • 5

先来介绍一下怎么添加用户
在这里插入图片描述
在这里插入图片描述
添加私有项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

harbor仓库部署(添加功能)

官方参考文档

1.添加扫描功能(平时建议关闭,每扫描一次就会增加虚拟机大小)

2.测试(做完实验将其关闭)

3.添加签名功能
部署根证书
cp /root/certs/www.lyueyue.org.crt  /etc/docker/certs.d/www.lyueyue.org/ca.crt
mkdir /root/.docker/tls/www.lyueyue.org:4443/ -p
cd /etc/docker/certs.d/www.lyueyue.org/
cp ca.crt /root/.docker/tls/www.lyueyue.org\:4443/

启用docker内容信任
export DOCKER_CONTENT_TRUST=1 
export DOCKER_CONTENT_TRUST_SERVER=https://www.lyueyue.org:4443

4.测试:上传镜像
docker images
docker push www.lyueyue.org/library/busybox:latest 

5.设置内容信任

6.在server2上测试
docker pull www.lyueyue.org/library/nginx:latest 
docker pull www.lyueyue.org/library/busybox:latest 

7.取消签名机制,保留其不占用空间,为之后学习K8S作准备。
export DOCKER_CONTENT_TRUST=0
docker-compose down
./prepare
./install.sh --with-chartmuseum
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

开启上传时的自动扫描
在这里插入图片描述
在这里插入图片描述
上传镜像测试
在这里插入图片描述
发现镜像被自动扫描
在这里插入图片描述
添加签名功能
在这里插入图片描述
在这里插入图片描述
当项目更改时需要更改root密码,当项目没变动而项目中镜像版本发生变化时需要更改repository密码。
在这里插入图片描述
在这里插入图片描述
设置内容信任
在这里插入图片描述
在server2上只能拉取已签名的镜像
在这里插入图片描述
清理环境重新安装部署
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/788783
推荐阅读
相关标签
  

闽ICP备14008679号