目录

  • Harbor简介  
  • Harbor私有仓库的部署
  • 登录harbor仓库上传和拉取镜像
  • 从节点上拉取镜像 (将密钥传给各个节点)
  • 创建个人用户仓库
  • 私有仓库验证是否成功(节点是否会自动拉取镜像)

 

  一、Harbor简介:

  • Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:
  •         Cloud native registry:支持容器镜像和Helm Charts,为云原生环境提供服务
  •         Role based access control:基于角色的访问控制
  •         Policy based image replication:基于策略的镜像复制
  •         Vulnerability Scanning:镜像的漏洞扫描
  •         LDAP/AD support:AD/LDAP集成
  •         Image deletion & garbage collection:镜像的删除和空间清理
  •         Notary:可以保证镜像的真实性
  •         Graphical user portal:友好的管理UI
  •         Auditing:日志审计
  •         RESTful API:提供RESTfull接口易于与外部系统集成
  •         Easy deployment:部署简单
     

 

二、Harbor私有仓库的部署

 

(一)、实验步骤:

实验环境的部署:

           主机名

                  IP地址

             系统

作用

      reg.westos.org

                172.25.6.3

            rhel7.5

为集群(server1、server2、server3)提供docker软tar包的主机

          server1

                172.25.6.1

            rhel7.5

swarm集群控制节点

          server2

                172.25.6.2

            rhel7.5

swarm集群从节点

          server4

                172.25.6.4

            rhel7.5

swarm集群从节点

 

 

实验步骤:

部署的软件:

  •     docker-ce-18.09.6-3.el7.x86_64.rpm
  •     docker-ce-cli-18.09.6-3.el7.x86_64.rpm
  •     containerd.io-1.2.5-3.1.el7.x86_64.rpm
  •     container-selinux-2.21-1.el7.noarch.rpm
  •     harbor软件包:
  •     harbor-offline-installer-v1.8.2.tgz

四台虚拟机上都要安装docker服务(前面已经装过了)

 

1、检查虚拟机网络是否畅通

ping baidu.com

docker 镜像仓库增加_docker

 

 

2、将harbor软件 转给需要布置harbor仓库的主机、

docker 镜像仓库增加_docker 镜像仓库增加_02

 

3、解压harbor软件

tar zxf harbor-offline-installer-v1.8.2.tgz    ##解压软件

docker 镜像仓库增加_docker 镜像仓库增加_03

 

4、进入harbor的主配置目录下

harbor.yml       ##harbor主配置文件 
 install.sh       ##安装命令 
 LICENSE  
 prepare

docker 镜像仓库增加_上传_04

 

 

5、查看安装主机本身环境的基本信息

docker info         ##查看docker的配置信息

docker 镜像仓库增加_私有仓库_05

 

(2)、查看集群节点:

docker  node   ls        ##查看集群节点

docker 镜像仓库增加_docker_06

 

 

(3)、清空环境:

docker 镜像仓库增加_私有仓库_07

 

(4)、查看docker-compos命令(docker-compose 用于harbor镜像的管理)

docker 镜像仓库增加_私有仓库_08

 

 因为server1为服务的主节点所以将harbor'服务布置在server3上 (要确保环境的清洁不然进行其他实验

可能会出现资源争抢的情况)

 

 

 

 

 

 

 

 

(二)、在server3上安装和部署harbor软件

1、解压harbor软件

tar zxf harbor-offline-installer-v1.8.2.tgz

docker 镜像仓库增加_docker 镜像仓库增加_09

docker 镜像仓库增加_私有仓库_10

 

(2)、chmod +x docker-compose     ##给于可写权限

docker 镜像仓库增加_上传_11

 

(3)进入harbor主目录查看相关信息

docker 镜像仓库增加_docker_12

 

(4)、查看harbor主配置文件

docker 镜像仓库增加_docker 镜像仓库增加_13

 

 

2、生成密钥和证书

openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.westos.org.key -x509 -days 365 -out reg.westos.org.crt

docker 镜像仓库增加_私有仓库_14

docker 镜像仓库增加_私有仓库_15

 

3、将主机名修改成与证书上的写入的访问域名一样否则系统位法辨认

hostnamectl set-hostname reg.westos.org

docker 镜像仓库增加_docker 镜像仓库增加_16

 

4、添加本地解析

docker 镜像仓库增加_docker_17

 

docker 镜像仓库增加_私有仓库_18

 

docker 镜像仓库增加_私有仓库_19

 

 

6、修改主配置目录:

cd harbor            ##进去harbor主目录中 
vim  harbor.yml      ##编辑harbor主配置文件 
修改的地方如下:
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: reg.westos.org                               ##主机名

# http related config
#http:                                                 ##通过https方式访问harbor
  # port for http, default is 80. If https enabled, this port will redirect to https port
#  port: 80

# https related config
https:                                                  ##通过加密认证的方式访问harbor
   # https port for harbor, default is 443
   port: 443                             
   # The path of cert and key files for nginx
   certificate: /etc/docker/reg.westos.org.crt          ##证书存放的位置 
   private_key: /etc/docker/reg.westos.org.key          ##密钥存放的位置

# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: westos                           ##登录harbor仓库的密码 

# Harbor DB configuration
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: westos                                     ##数据库的密码 

# The default data volume
data_volume: /data                                     ##数据卷存放的位置

# Harbor Storage settings by default is using /data dir on local filesystem
# Uncomment storage_service setting If you want to using external storage

docker 镜像仓库增加_docker 镜像仓库增加_20

docker 镜像仓库增加_上传_21

 

(注:在进行harbor访问时有两种访问方式:第一种时通过http 80端口访问无需密码   第二中通过加密认证的方式访问需要生成密钥和证书 )

编译harbor软件

cd  harbor             
./install.sh          ##编译命令

 

docker 镜像仓库增加_docker_22

 

docker 镜像仓库增加_docker_23

 

7、看到此页面说明编译成功

docker 镜像仓库增加_上传_24

 

8、编译成功会在harbor目录下生成

common                ##目录 
docker-compose.yml    ##文件

 

9、查看安装harbor之后自动生成的容器

docker 镜像仓库增加_docker 镜像仓库增加_25

 

 

10、查看docker-compose.yml文件信息

docker 镜像仓库增加_docker 镜像仓库增加_26

 

docker 镜像仓库增加_私有仓库_27

 

 

11、查看生成的 镜像

docker 镜像仓库增加_上传_28

 

 

12、查看harbor软件部署对应的各个关联容器对应的状态

 (所有容器的状态都为up时访问harbor才成功)

docker-compose ps             ##查看管理的容器的健康状态
docker-compose down           ##关闭容器
docker-compose up             ##开启容器

docker 镜像仓库增加_上传_29

 

 

13、在真机上要添加域名解析因为访问harbor时要通过域名的方式访问 ,在真机上打开的浏览器

不加解析就无法识别需要访问的内容

docker 镜像仓库增加_私有仓库_30

查看真机是否可以和reg.westos.org的域名 可以ping通

docker 镜像仓库增加_私有仓库_31

 

 

14、在浏览器上输入https://reg.westos.org

docker 镜像仓库增加_docker_32

 

15、输入登录名和密码

docker 镜像仓库增加_私有仓库_33

 

 

16、查看镜像仓库的基本信息:

docker 镜像仓库增加_docker_34

 

docker 镜像仓库增加_上传_35

 

docker 镜像仓库增加_docker_36

 

docker 镜像仓库增加_上传_37

 

 

 

 

 

三、登录harbor仓库上传和拉取镜像

 

(一)、在reg.westos.org 主机上上传镜像时需要登录验证否则无法上传

验证:没有登录认证就上传镜像

docker tag ubuntu:latest reg.westos.org/library/nginx      ## 指定镜像上传的位置
docker push reg.westos.org/library/nginx                   ##上传镜像

docker 镜像仓库增加_docker_38

docker 镜像仓库增加_私有仓库_39

上传失败!!错误提示:缺少认证信息

 

 

 

(二)登录认证

登录认证的步骤:

1、创建证书路径

[root@reg ~]# cd /etc/docker/
[root@reg docker]# mkdir -p certs.d                           ##创建网页认证存放的位置 
[root@reg docker]# cd certs.d/
[root@reg certs.d]# mkdir reg.westos.org/                    
[root@reg certs.d]# cd reg.westos.org/
[root@reg reg.westos.org]# cp /etc/docker/reg.westos.org.crt ca.crt   ##将证书复制存放到登录信息所读取的路径/etc/docker/certs.d/reg.westos.org/目录下 且证书的名字必须为ca.crt(不然系统无法识别)

docker 镜像仓库增加_docker_40

 

2、登录认证上传镜像

[root@reg ]# docker login  reg.westos.org                  ##登录认证
docker tag ubuntu:latest reg.westos.org/library/nginx      ## 指定镜像上传的位置
docker push reg.westos.org/library/nginx                   ##上传镜像

docker 镜像仓库增加_docker 镜像仓库增加_41

 

docker 镜像仓库增加_docker_42

 

docker 镜像仓库增加_docker 镜像仓库增加_43

 

 

docker 镜像仓库增加_docker 镜像仓库增加_44

 

 

3、在网页上查看镜像是否成功上传到harbor仓库中

docker 镜像仓库增加_私有仓库_45

 

docker 镜像仓库增加_docker 镜像仓库增加_46

 

docker 镜像仓库增加_docker 镜像仓库增加_47

 

 

 

 

四、设置在从节点上也可以拉取镜像

将认证文件信息转给各个节点 (提前创建号认证所读取文件的路径)

 

1、创建存放证书的路径

server1上:

[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# mkdir -p certs.d                           ##创建网页认证存放的位置 
[root@server1 docker]# cd certs.d/
[root@server1 certs.d]# mkdir reg.westos.org/

docker 镜像仓库增加_docker_48

 

docker 镜像仓库增加_上传_49

 

docker 镜像仓库增加_私有仓库_50

 

 

2、在server4上:

(和server1上的操作步骤相同)

docker 镜像仓库增加_docker 镜像仓库增加_51

 

docker 镜像仓库增加_私有仓库_52

 

docker 镜像仓库增加_上传_53

 

 

在server2上:

(同上)

docker 镜像仓库增加_上传_54

 

docker 镜像仓库增加_docker 镜像仓库增加_55

 

 

 

在server1上进行从节点进行镜像的上传和拉取实验 :

docker 镜像仓库增加_docker 镜像仓库增加_56

 

在server1上进行域名解析

docker 镜像仓库增加_docker_57

 

docker 镜像仓库增加_上传_58

 

 

3、查看域名解析是否可以ping通

docker 镜像仓库增加_上传_59

 

 

5、从harbor私有仓库拉取镜像

docker pull reg.westos.org/libary/nginx

docker 镜像仓库增加_私有仓库_60

 

 

4、在网页上查看私有仓库的日志

(可以看到私有仓库中的镜像被拉取或者上传的记录)

docker 镜像仓库增加_上传_61

 

 

 

五、创建个人用户仓库

在harbor页面点击用户管理 :

docker 镜像仓库增加_docker 镜像仓库增加_62

 

 

2、点击创建用户

docker 镜像仓库增加_docker_63

 

docker 镜像仓库增加_上传_64

 

3、将创建好的用户添加到项目中

docker 镜像仓库增加_私有仓库_65

 

docker 镜像仓库增加_上传_66

 

 

4、查看添加好的私人用户

docker 镜像仓库增加_docker 镜像仓库增加_67

 

5、将私人用户的身份改成维护人员:

docker 镜像仓库增加_docker_68

 

docker 镜像仓库增加_docker_69

 

 

6、验证节点上传镜像

(1)、没有进行认证就上传镜像

创建号的harbor私有仓库从节点只能拉取镜像而不能上传镜像   如果要实现上传的功能必须要使用创建好的个人用户身份进行登录验证才能上传

在server1上:

验证:没有认证就上传镜像

docker tag ubuntu:latest reg.westos.org/library/haproxy      ## 指定镜像上传的位置
docker push reg.westos.org/library/haproxy                   ##上传镜像 
报错:
denied: requested access to resource is denied               ##系统权限问题无法上传

 

docker 镜像仓库增加_上传_70

 

 

 

(2)、以私人用户的身份进行进行认证登录

docker login reg.westos.org

docker 镜像仓库增加_上传_71

 

登录成功后系统将会把登录信息写入文件.docker目录下的config.json文件中

[root@server1 ~]# cd .docker/
[root@server1 .docker]# cat config.json         ##查看登录信息文件

docker 镜像仓库增加_私有仓库_72

docker 镜像仓库增加_私有仓库_73

 

 

如果要删除之前登录的信息 输入以下命令:

docker logout  config.json                  ##删除之前的登录信息

 

docker 镜像仓库增加_私有仓库_74

 

3、再次进行镜像上传:

(上传成功)

docker 镜像仓库增加_私有仓库_75

 

在server4中拉取上传到私有用户的镜像

docker pull reg.westos.org/library/haproxy         ##拉取镜像

docker 镜像仓库增加_上传_76

(拉取镜像失败因为没有登录认证)

 

 

六、私有仓库验证是否成功(加点是否会自动拉取镜像)

 

 

1、创建容器副本时,各个节点上的将会自动拉从harbor私有仓库上自动拉取镜像

server1上删除之前的实验镜像信息

docker 镜像仓库增加_docker 镜像仓库增加_77

 

2、在server4上也进行相关的操作

docker 镜像仓库增加_docker 镜像仓库增加_78

 

3、在server2上:

docker 镜像仓库增加_私有仓库_79

 

4、创建3个名字为my_web以nginx为镜像的副本

[root@server1 ~]#docker service create --help        ##查看docker servicer 的相关
[root@server1 ~]#docker service create --name my_web --replicas 3 --publish 80:80 nginx     ##建立3个副本的命名为my_web,端口影射为80 使用的镜像为nginx

docker 镜像仓库增加_docker 镜像仓库增加_80

docker 镜像仓库增加_私有仓库_81

 

 

5、查看各个节点的镜像是否自动拉取

docker images         ##查看docker的镜像命令

在server1上:

(拉取成功)

docker 镜像仓库增加_上传_82

 

在server4上:

(拉取成功)

docker 镜像仓库增加_私有仓库_83

 

 

6、在harbor应用上查看拉取镜像的日志:

(可以看到nginx镜像被拉取3次)

docker 镜像仓库增加_docker 镜像仓库增加_84

 

 

Harbor私有仓库的创建总结:

Harbor私有仓库的创建不仅有利于在实际的生产环境中更快更安全的部署 实验的环境,且大大提高了企业的工作效率,

节省了部署的时间。