1、Harbor概述

Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志,ji镜像复制和中文等,足以满足基本企业需求。
官方地址:https://vmware.github.io/harbor/cn/

组件 功能
harbor-adminserver 配置管理中心
harbor-db Mysql数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-ui Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registry 镜像存储

2、Harbor部署

Harbor安装有3种方式:

  • 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大
  • OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

3、私有镜像仓库registry

有时候使用Docker Hub这样的公共仓库可能不方便(有时候无法访问),用户可以创建一个本地仓库供私人使用,这里使用官方提供的工具docker-registry来配置私有库。

3.1 部署私有镜像仓库

  • 实验环境:
    docker私有仓库地址:192.168.31.10
    docker服务器地址 : 192.168.31.11 ,192.168.31.11会推送/拉取192.168.31.10私有仓库的镜像。
  • 安装docker及registry
#关闭selinux
vim /etc/sysconfig/selinux 
改:SELINUX = enforcing
为:SELINUX=disabled

# 开启路由转发
vim /etc/sysctl.conf  
net.ipv4.ip_forward = 1
[root@registry ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@registry ~]# 
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
systemctl stop firewalld && systemctl disable firewalld
systemctl start docker
systemctl enable docker

#配置镜像加速
[root@registry ~]# cat /etc/docker/daemon.json 
{
    "registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]
}
[root@registry ~]# 
[root@registry ~]# systemctl restart docker

# 拉取registry镜像
[root@registry ~]# docker pull registry

# 启动registry容器
[root@registry ~]# docker run -d -p 5000:5000 --name registry -v /opt/registry:/var/lib/registry registry

#这个目录会自动创建
[root@registry ~]# ls /opt/registry/
[root@registry ~]# 

默认情况下,Registry程序的存放镜像信息的目录是/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地物理机一个目录如/opt/registry挂载到容器的/var/lib/registry下。使用-v参数,指定本地持久的路径。
registry服务监听到端口号,默认是5000

  • 检验registry
[root@registry ~]# netstat  -lntup|grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      17964/docker-proxy  
tcp6       0      0 :::5000                 :::*                    LISTEN      17968/docker-proxy  
[root@registry ~]# 

说明,私有库已经启动成功。
查看私有仓库中的镜像列表:
http://192.168.31.10:5000/v2/_catalog #发现,现在还是空的,后期上传了本地docker镜像到私有仓库中,就有数据了。

  • 搭建docker服务并使用私有仓库
#配置docker的镜像,修改为私有仓库
[root@docker ~]# cat /etc/docker/daemon.json 
{
    "registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.31.10:5000"]
}
[root@docker ~]# 
[root@docker ~]# docker pull busybox
[root@docker ~]# docker tag cabb9f684f8b 192.168.31.10:5000/busybox:latest
[root@docker ~]# docker push 192.168.31.10:5000/busybox:latest
[root@docker ~]# docker pull  192.168.31.10:5000/busybox:latest
#查看镜像的存储目录
[root@registry ~]# tree /opt/registry/docker/registry/v2/repositories/

注意:-insecure-registry不安全的注册。这里的不安全指的是走http协议,要想安全传输镜像,需要使用https协议。我们的私有仓库一般是局域中使用,所以直接使用http协议就可以了。

  • 导入镜像到私有仓库步骤:
1、安装docker服务
2、修改docker 服务 镜像源,改成私有仓库地址:
"insecure-registries": [ "192.168.31.10:5000" ] 
3、把要导入的镜像打个标签如: 192.168.31.10:5000/busybox:latest
4、上传打了标签的镜像到私有仓库: 
docker push  192.168.31.10:5000/busybox:latest
  • 私有仓库的使用:
1、修改docker服务镜像源,改成私有仓库地址:
"insecure-registries": [ "192.168.31.10:5000" ]
2、下载刚才上传的镜像: 
docker pull  192.168.31.10:5000/busybox:latest
3、查看私有仓库中的镜像列表:
http://192.168.31.10:5000/v2/_catalog
文档更新时间: 2021-11-03 15:15   作者:xtyang