Linux下私有仓库harbor的搭建部署之http的方式访问Web Ui(一)(docker版本:18.06.1-ce)

续我的上篇博文:https://mp.csdn.net/postedit/88721494

 

 

一、Harbor 介绍

 

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

 

二、实验环境(rhel7.3版本)

1.selinux和firewalld状态为disabled

2.各主机信息如下:

主机ip
server1(Docker,Docker-compose,Harbor)172.25.83.1
物理机(Docker客户端。之前实验安装过docker,所以这里可以直接使用,不用再安装docker)172.25.83.83/172.25.254.83

以下是安装的软件及版本:

  1. Docker:version 18.06.1-ce——前面已经安装过,所以这里不必再安装
  2. Docker-compose: version 1.13.0
  3. Harbor: version 1.5.1

注意:Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。

 

三、harbor私有仓库的搭建部署

 

前提条件:保证,配置镜像加速器的主机可以上网。

#物理机
[root@foundation83 ~]# iptables -t nat -I POSTROUTING -s 172.25.83.0/24 -j MASQUERADE
##server1

[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.83.1
PREFIX=24
GATEWAY=172.25.83.83     #设置网关地址
DNS1=114.114.114.114     #设置DNS域名解析

 

[root@server1 ~]# ping www.baidu.com      #测试网络是否ok
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=1 ttl=50 time=23.0 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=2 ttl=50 time=23.7 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=3 ttl=50 time=35.0 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 23.070/27.307/35.090/5.513 ms

 

 

配置服务端(server1):

 

1 、下载并安装docker-compose

 

1、下载指定版本的docker-compose (https://github.com/docker/compose/releases) 
[root@server1 ~]# curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
2、对二进制文件赋予可执行权限 
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose 
3、测试下docker-compose是否安装成功 
[root@server1 ~]# docker-compose version
  • 下载指定版本的docker-compose

  • 对二进制文加赋予可执行权限

  • 测试docker-compose是否安装成功

 

 

2、下载并安装harbor(这里下载在线安装包)

 

从 github harbor 官网 release 页面下载指定版本的安装包。

[root@server1 ~]# yum install wget -y
1、在线安装包 
[root@server1 ~]# wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz 
[root@server1 ~]# tar zxf harbor-online-installer-v1.1.2.tgz 
2、离线安装包
[root@server1 ~]# wget https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.1.tgz 
[root@server1 ~]# tar zxf harbor-offline-installer-v1.5.1.tgz

 

 

3、配置harbor

 

解压之后,目录下会生成 harbor.conf 文件,该文件就是harbor的配置文件

[root@server1 ~]# cd harbor
[root@server1 harbor]# vim harbor.cfg
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
5 hostname = 172.25.83.1   #需要修改的内容。更改hostname为本机的IP地址。也可以写为域名,比如chen.org。只要前后一致即可(将后面172.25.83.1的地方换为chen.org)。


______________________________________________________________________________________
以下都是要了解的内容,不需要做任何修改

# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
9 ui_url_protocol = http   #了解的内容

# mysql数据库root用户默认密码root123,实际使用时修改下
12 db_password = root123   #了解的内容

15 max_job_workers = 3 
21 customize_crt = on
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
28 secretkey_path = /data
31 admiral_url = NA

# 邮件设置,发送重置密码邮件时使用
43 email_identity =  
45 email_server = smtp.mydomain.com
46 email_server_port = 25
47 email_username = sample_admin@mydomain.com
48 email_password = abc
49 email_from = admin <sample_admin@mydomain.com>
50 email_ssl = false

# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
55 harbor_admin_password = Harbor12345

# 认证方式,这里支持多种认证方式,如LDAP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
59 auth_mode = db_auth

# LDAP认证时配置项
62 ldap_url = ldaps://ldap.mydomain.com
72 ldap_basedn = ou=people,dc=mydomain,dc=com
78 ldap_uid = uid 
81 ldap_scope = 3 
84 ldap_timeout = 5

# 是否开启自注册
87 self_registration = on

# Token有效时间,默认30分钟
90 token_expiration = 30

# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
95 project_creation_restriction = everyone
99 verify_remote_cert = on

 

 

4、确保80端口和443端口没有容器或服务在占用(因为启动harbor时所产生的服务要占用80端口和443端口)

 

[root@server1 harbor]# docker stop registry1   #停掉之前占用443端口的容器registry1
registry1
[root@server1 harbor]# netstat -antulpe | grep 443   #确保443端口没有被占用
[root@server1 harbor]# netstat -antulpe | grep 80   #确保80端口没有被占用

 

5、启动 Harbor

 

修改完配置文件后,在当前目录执行 ./install.sh,harbor服务就会根据当前目录下的 docker-compose.yml(依赖docker -compose来执行docker-compose.yml)开始下载依赖的镜像,检测并按照顺序依次启动各个服务,harbor依赖的镜像及启动服务如下:

 

[root@server1 harbor]# ./install.sh
  • 出现如下的界面,表示harbor启动成功

  • docker images

  • docker-compose  ps(.docker-compose的使用非常类似于docker命令的使用,但是需要注意的是大部分的compose命令都需要到docker-compose.yml文件所在的目录下才能执行。

 

6、web界面查看

 

<1>

启动完成后,我们访问刚设置的 hostname 即可 http://172.25.83.1/,默认是80端口,如果端口占用,我们可以去修改docker-compose.yml文件中,对应服务的端口映射

我们可以点击,右上角的English,将字体调整为中文

默认用户名和密码是:admin/Harbor12345

点击"+项目",可以添加项目。我这里添加的项目的名称是my_harbor。并设置为私有项目,即只有登录了(login)的相关用户才可以进行pull和push的操作。如果勾选了"公开",则所有人都可以pull和push。

 

<2>

创建了私有项目之后,我们尝试上传172.25.83.1/my_harbor/rhel7:nginx4镜像(如果是域名,比如chen.org。则上传chen.org/my_harbor/rhel7:nginx4。,结果一定是失败,因为需要执行login的操作。

[root@server1 harbor]# docker tag rhel7:nginx4 172.25.83.1/my_harbor/rhel7:nginx4
[root@server1 harbor]# docker push 172.25.83.1/my_harbor/rhel7:nginx4 
The push refers to repository [172.25.83.1/my_harbor/rhel7]
9fd85e6ca660: Preparing 
668afdbd4462: Preparing 
denied: requested access to the resource is denied   #报错,镜像并没有上传成功

 

7、登录172.25.83.1,报错:

 

[root@server1 harbor]# docker login 172.25.83.1
Username: admin   #默认用户名:admin
Password:         #默认密码:Harbor12345
Error response from daemon: Get https://172.25.83.1/v2/: dial tcp 172.25.83.1:443: connect: connection refused   #连接拒绝

 

这是因为 docker1.3.2 版本开始默认 docker registry 使用的是 https,我们设置 Harbor 默认 http 方式,所以当执行用 docker login、pull、push 等命令操作非 https 的 docker regsitry 的时就会报错。解决办法:

  1. 如果系统是MacOS,则可以点击“Preference”里面的“Advanced”在“Insecure Registry”里加上172.25.83.1,重启Docker客户端就可以了;
  2. 如果系统是Ubuntu,则修改配置文件/lib/systemd/system/docker.service,修改[Service]下ExecStart参数,增加--insecure-registry=172.25.83.1
  3. 如果系统是Centos或RedHat,可以修改配置 /usr/lib/systemd/system/docker.service(通过systemctl  status  docker来查看该目录),将 ExecStart 增加 --insecure-registry=172.25.83.1
[root@server1 harbor]# vim /usr/lib/systemd/system/docker.service
12 ExecStart=/usr/bin/dockerd --insecure-registry=172.25.83.1

 

重启docker,再次在本地执行登录操作

[root@server1 harbor]# systemctl daemon-reload 
[root@server1 harbor]# systemctl restart docker
[root@server1 harbor]# docker login 172.25.83.1   #或docker login -u admin -p Harbor12345 172.25.83.1
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded   #登录成功

#补充:能够登录172.25.83.1,那么当然也能退出172.25.83.1
命令为:docker logout 172.25.83.1  #退出登录之后/root/.docker/config.json文件中也就不再有172.25.83.1的认证记录了。当然那下一次要push或pull镜像的时候,需要重新执行login的操作。
  • 登陆成功之后,会生成,相应的认证文件。以保证,下次不用再登录。

 

 

8、上传镜像172.25.83.1/my_harbor/rhel7:nginx4(值的注意的是:镜像的名字中第二个/前面必须是172.25.83.1/my_harbor)

我们再次尝试上传172.25.83.1/my_harbor/rhel7:nginx4镜像

[root@server1 harbor]# docker push 172.25.83.1/my_harbor/rhel7:nginx4 
The push refers to repository [172.25.83.1/my_harbor/rhel7]
9fd85e6ca660: Pushed   #显示Pushed表示上传成功
668afdbd4462: Pushed 
nginx4: digest: sha256:88e96d92b032b90a2549b961928f795e59e6e125ad38785957cc694aaba2cca5 size: 73


push镜像成功之后,然后在web界面上查看镜像是否存在,并且可以对镜像进行删除等操作

点击my_harbor

点击my_harbor/rhel7,

可以看到之前上传的镜像,表示配置成功。

 


web界面看到的内容,也就是之前上传的镜像(172.25.83.1/my_harbor/rhel7:nginx4)。该内容和/data/registry(/data目录在harbor.cfg文件中指定过)的内容是同步的。也就是说,如果将/data/registry目录下的内容删除,web界面也就看不到相应的内容了,同时pull会失败。


 


当然上传的镜像以及创建的私有项目是可以删除的。点击左侧是三个小点点,进行删除的操作。

删除镜像172.25.83.1/my_harbor/rhel7:nginx4

删除创建的私有项目my_harbor


 

客户端测试(物理机):

 

在下载之前,

我们需要先获取harbor仓库类的镜像:

以及获取某个镜像的标签列表:

 

<1>修改文件/usr/lib/systemd/system/docker.service,并重启docker服务

[root@foundation83 ~]# vim /usr/lib/systemd/system/docker.service
12 ExecStart=/usr/bin/dockerd --insecure-registry=172.25.83.1
[root@foundation83 ~]# systemctl daemon-reload 
[root@foundation83 ~]# systemctl restart docker

 

<2>登录172.25.83.1

[root@foundation83 ~]# docker login 172.25.83.1
Username: admin   #用户名admin
Password:         #密码Harbor12345
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
  • 登陆成功之后,会生成,相应的认证文件。以保证,下次不用再登录。

 

<3>下载镜像172.25.83.1/my_harbor/rhel7:nginx4

[root@foundation83 ~]# docker pull 172.25.83.1/my_harbor/rhel7:nginx4
nginx4: Pulling from my_harbor/rhel7
269521def953: Pull complete   #显示Pull complete表示pull成功
ff969636d6bb: Pull complete 
Digest: sha256:88e96d92b032b90a2549b961928f795e59e6e125ad38785957cc694aaba2cca5
Status: Downloaded newer image for 172.25.83.1/my_harbor/rhel7:nginx4

 

##如果看不惯镜像172.25.83.1/my_harbor/rhel7:nginx4这个名字,可以改名字
[root@foundation83 ~]# docker tag 172.25.83.1/my_harbor/rhel7:nginx4 rhel7:nginx4
[root@foundation83 ~]# docker rmi 172.25.83.1/my_harbor/rhel7:nginx4 

 


服务端可以上传镜像,也可以下载镜像(这里不再演示,同客户端的pull);客户端如果登录了,当然可以上传镜像(这里不再演示,同服务端的push),也可以下载镜像。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值