搭建harbor仓库

搭建harbor仓库

harbor概述

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

Harbor的主要功能

  • 基于角色的访问控制
    用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

  • 基于镜像的复制策略
    镜像可以在多个Registry实例中复制(可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能),尤其适合于负载均衡,高可用,混合云和多云的场景。

  • 图形化用户界面
    用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

  • 审计管理
    所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

  • 部署简单
    提供在线和离线两种安装工具, 也可以安装到vSphere平台虚拟设备。

harbor搭建

搭建准备

开始搭建

docker安装(离线)

将安装包文件上传到服务器目录并解压。

tar -zxvf docker-23.0.1.tgz

将解压出来的docker文件内容移动到 /usr/bin/ 目录下.

cp docker/* /usr/bin/

将docker注册为service,在/etc/systemd/system目录下创建docker.service文件,并配置如下内容保存。

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

添加文件权限并启动docker,执行如下命令。

chmod +x /etc/systemd/system/docker.service #添加文件权限
systemctl daemon-reload #重载unit配置文件
systemctl start docker #启动Docker
systemctl enable docker.service #设置开机自启

验证docker安装是否成功。

systemctl status docker #查看Docker状态
docker -v #查看Docker版本

docker-compose安装(离线)

将之前下载的docker-compose文件复制到/usr/bin/目录下,并给执行权限。

mv docker-compose-linux-x86_64 docker-compose
cp docker-compose /usr/bin/
chmod +x /usr/bin/docker-compose

安装成功,验证。

docker-compose -v

harbor安装(离线)

上传harbor压缩包,并解压。

tar -zxvf harbor-offline-installer-v1.10.16.tgz

进入harbor目录给予以下文件执行权限。

chmod +x common.sh install.sh prepare

修改harbor.yml文件。

注:以实际行数为准,只供参考。

  • 修改第五行 hostname 为主机ip或域名;
  • 注释第13行 https;
  • 注释第15行 port: 443;
  • 修改第27行 harbor_admin_password,设置一个admin用户的密码;
  • 修改第40行 data_volume,修改harbor的数据目录;
  • 修改第87行 location,修改harbor的日志目录。

安装,执行harbor目录下的install.sh文件。

./install.sh

✔ ----Harbor has been installed and started successfully.----

出现上面这句表示安装成功。

harbor维护

容器 功能
harbor-core 配置管理中心
harbor-db PG数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-portal Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registryctl 镜像存储
  • 容器数据持久化目录(可更改):/data
  • 日志文件目录(可更改):/var/log/harbor
  • 数据库做好定期备份。

配置harbor主从复制

主备

  • 简单,主挂了切到备Harbor;
  • 同一时间只有一台提供服务;
  • 适合少量镜像下载。

双主

  • 双向配置复制;
  • 两台同时提供服务;
  • 前面增加负载均衡器。

一主多从

  • 多个从同步主;
  • 适合多地区业务、大量镜像下载需求。

主从配置步骤

系统管理$\Longrightarrow$仓库管理$\Longrightarrow$新建目标

  • 提供者:选择Harbor;
  • 目标名:自定义,可填一个具有声明意义的名称;
  • 描述:自定义,可备注目标仓库的一些信息;
  • 目标URL:对端仓库的地址;
  • 访问ID:目标仓库的用户名;
  • 访问密码:访问ID的密码;
  • 验证远程证书:如果对端用的是自签证书或者非信任证书的话不要勾选此项。

系统管理$\Longrightarrow$复制管理$\Longrightarrow$新建规则

  • 名称:自定义,有声明意义;
  • 描述:自定义,备注规则中仓库信息;
  • 复制模式
    • Push-based:从本地仓库推送到远程仓库,双主模式两个harbor同时配置;
    • Pull-based:从远程仓库拉去到本地仓库,一主多从模式的从库可配置,主从模式从库可配置;
  • 目标仓库/源仓库:对端仓库地址,在仓库管理中添加;
  • 资源过滤器:指定根据什么来同步;
  • 触发模式:一般选择事件驱动,这样主库已更新就会同步。

docker基础命令使用以及镜像上传下载

主机连接harbor仓库命令

docker login 目标仓库地址:端口
输入账号密码

docker login 192.168.106.170:80

登录docker报错,按照文档《登录docker报错》处理

退出连接

docker logout 目标仓库地址:端口

docker logout 192.168.106.170:80

上传镜像到私有仓库及验证

docker push 仓库地址/项目名称/镜像:镜像版本

docker push 192.168.106.170:80/test/nginx:1.23-alpine

拉取harbor仓库镜像报错

[root@es-single ~]# docker pull 192.168.106.170/ferhat/nginx:1.23-alpine
Error response from daemon: Get "https://192.168.106.170/v2/": dial tcp 192.168.106.170:443: connect: connection refused

加上端口拉取docker pull 192.168.106.170:80/ferhat/nginx:1.23-alpine

/etc/systemd/system/docker.service文件下面一行后面添加--insecure-registry=192.168.2.195(没试过)
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.2.195

然后重启docker服务

systemctl daemon-reload
systemctl restart docker
posted @   武胜造纸农  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示