当前位置:   article > 正文

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

harbor配置http

续我的上篇博文: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私有仓库的搭建部署

 

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

  1. #物理机
  2. [root@foundation83 ~]# iptables -t nat -I POSTROUTING -s 172.25.83.0/24 -j MASQUERADE
  1. ##server1
  2. [root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
  3. DEVICE=eth0
  4. ONBOOT=yes
  5. BOOTPROTO=static
  6. IPADDR=172.25.83.1
  7. PREFIX=24
  8. GATEWAY=172.25.83.83 #设置网关地址
  9. DNS1=114.114.114.114 #设置DNS域名解析

 

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

 

 

配置服务端(server1):

 

1 、下载并安装docker-compose

 

  1. 1、下载指定版本的docker-compose (https://github.com/docker/compose/releases)
  2. [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
  3. 2、对二进制文件赋予可执行权限
  4. [root@server1 ~]# chmod +x /usr/local/bin/docker-compose
  5. 3、测试下docker-compose是否安装成功
  6. [root@server1 ~]# docker-compose version
  • 下载指定版本的docker-compose

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

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

 

 

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

 

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

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

 

 

3、配置harbor

 

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

  1. [root@server1 ~]# cd harbor
  2. [root@server1 harbor]# vim harbor.cfg
  3. # hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
  4. 5 hostname = 172.25.83.1 #需要修改的内容。更改hostname为本机的IP地址。也可以写为域名,比如chen.org。只要前后一致即可(将后面172.25.83.1的地方换为chen.org)。
  5. ______________________________________________________________________________________
  6. 以下都是要了解的内容,不需要做任何修改
  7. # 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
  8. 9 ui_url_protocol = http #了解的内容
  9. # mysql数据库root用户默认密码root123,实际使用时修改下
  10. 12 db_password = root123 #了解的内容
  11. 15 max_job_workers = 3
  12. 21 customize_crt = on
  13. 24 ssl_cert = /data/cert/server.crt
  14. 25 ssl_cert_key = /data/cert/server.key
  15. 28 secretkey_path = /data
  16. 31 admiral_url = NA
  17. # 邮件设置,发送重置密码邮件时使用
  18. 43 email_identity =
  19. 45 email_server = smtp.mydomain.com
  20. 46 email_server_port = 25
  21. 47 email_username = sample_admin@mydomain.com
  22. 48 email_password = abc
  23. 49 email_from = admin <sample_admin@mydomain.com>
  24. 50 email_ssl = false
  25. # 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
  26. 55 harbor_admin_password = Harbor12345
  27. # 认证方式,这里支持多种认证方式,如LDAP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
  28. 59 auth_mode = db_auth
  29. # LDAP认证时配置项
  30. 62 ldap_url = ldaps://ldap.mydomain.com
  31. 72 ldap_basedn = ou=people,dc=mydomain,dc=com
  32. 78 ldap_uid = uid
  33. 81 ldap_scope = 3
  34. 84 ldap_timeout = 5
  35. # 是否开启自注册
  36. 87 self_registration = on
  37. # Token有效时间,默认30分钟
  38. 90 token_expiration = 30
  39. # 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
  40. 95 project_creation_restriction = everyone
  41. 99 verify_remote_cert = on

 

 

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

 

  1. [root@server1 harbor]# docker stop registry1 #停掉之前占用443端口的容器registry1
  2. registry1
  3. [root@server1 harbor]# netstat -antulpe | grep 443 #确保443端口没有被占用
  4. [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的操作。

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

 

7、登录172.25.83.1,报错:

 

  1. [root@server1 harbor]# docker login 172.25.83.1
  2. Username: admin #默认用户名:admin
  3. Password: #默认密码:Harbor12345
  4. 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
  1. [root@server1 harbor]# vim /usr/lib/systemd/system/docker.service
  2. 12 ExecStart=/usr/bin/dockerd --insecure-registry=172.25.83.1

 

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

  1. [root@server1 harbor]# systemctl daemon-reload
  2. [root@server1 harbor]# systemctl restart docker
  3. [root@server1 harbor]# docker login 172.25.83.1 #或docker login -u admin -p Harbor12345 172.25.83.1
  4. Username: admin
  5. Password:
  6. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  7. Configure a credential helper to remove this warning. See
  8. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  9. Login Succeeded #登录成功
  10. #补充:能够登录172.25.83.1,那么当然也能退出172.25.83.1
  11. 命令为: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镜像

  1. [root@server1 harbor]# docker push 172.25.83.1/my_harbor/rhel7:nginx4
  2. The push refers to repository [172.25.83.1/my_harbor/rhel7]
  3. 9fd85e6ca660: Pushed #显示Pushed表示上传成功
  4. 668afdbd4462: Pushed
  5. 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服务

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

 

<2>登录172.25.83.1

  1. [root@foundation83 ~]# docker login 172.25.83.1
  2. Username: admin #用户名admin
  3. Password: #密码Harbor12345
  4. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  5. Configure a credential helper to remove this warning. See
  6. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  7. Login Succeeded
  • 登陆成功之后,会生成,相应的认证文件。以保证,下次不用再登录。

 

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

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

 

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

 


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


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

闽ICP备14008679号