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