Harbor 企业级 Docker Registry 初试

2024-05-24 09:08

本文主要是介绍Harbor 企业级 Docker Registry 初试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、介绍

Project Harbor is an enterprise-class registry server, which extends the open source Docker Registry server by adding the functionality usually required by an enterprise, such as security, control, and management. Harbor is primarily designed to be a private registry - providing the needed security and control that enterprises require. It also helps minimize bandwidth usage, which is helpful to both improve productivity (local network access) as well as performance (for those with poor internet connectivity).

简单的说,Harbor 是一个企业级的 Docker Registry,可以实现 images 的私有存储和日志统计权限控制等功能,并支持创建多项目(Harbor 提出的概念),基于官方 Registry V2 实现。

二、环境准备

本文所使用的环境如下 :

  • Ubuntu 14.04
  • Docker 1.11.2
  • docker-compose 1.6.2

2.1、安装 Docker

执行以下命令安装 Docker

curl -fsSL https://get.docker.io | bash

2.2、安装 docker-compose

默认的 官方文档 安装命令如下 :

curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

经过本人测试,其文件托管在亚马逊上,伟大的防火墙成功阻止下载……

有能力的童鞋可以使用梯子,我已经下载好了一个 点击下载;下载后直接 cp 到 /usr/local/bin 下并给与可执行权限即可。

三、搭建 Harbor

3.1、克隆源码

git clone https://github.com/vmware/harbor

3.2、修改配置

cd harbor/Deploy/
vim harbor.cfg

配置样例如下 :

## Configuration file of Harbor#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# 指定 hostname,一般为IP,或者域名,用于登录 Web UI 界面
hostname = 10.211.55.17#The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
# URL 访问方式,SSL 需要配置 nginx
ui_url_protocol = http#Email account settings for sending out password resetting emails.
# 邮件相关信息配置,如忘记密码发送邮件
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = reg@mritd.me
email_password = xxxxxx
email_from = docker <reg@mritd.me>
email_ssl = true##The password of Harbor admin, change this before any production use.
# 默认的 Harbor 的管理员密码,管理员用户名默认 admin
harbor_admin_password = Harbor12345##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
# 指定 Harbor 的权限验证方式,Harbor 支持本地的 mysql 数据存储密码,同时也支持 LDAP
auth_mode = db_auth#The url for an ldap endpoint.
# 如果采用了 LDAP,此处填写 LDAP 地址
ldap_url = ldaps://ldap.mydomain.com#The basedn template to look up a user in LDAP and verify the user's password.
# LADP 验证密码的方式(我特么没用过这么高级的玩意)
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com#The password for the root user of mysql db, change this before any production use.
# mysql 数据库 root 账户密码
db_password = root123#Turn on or off the self-registration feature
# 是否允许开放注册
self_registration = on#Turn on or off the customize your certicate
# 允许自签名证书
customize_crt = on#fill in your certicate message
# 自签名证书信息
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = mritd
crt_organizationalunit = mritd
crt_commonname = mritd.me
crt_email = reg.mritd.me
#####

3.3、生成相关配置

cd harbor/Deploy/
./prepare

hexo_docker_harbor_prepare

3.4、编译 image 并启动

cd harbor/Deploy/
docker-compose up -d

hexo_docker_harbor_up

3.5、启动后相关容器

正常启动成功后会有 5 个 Contianer :

  • Proxy : 由Nginx 服务器构成的反向代理
  • Registry : 由Docker官方的开源registry 镜像构成的容器实例
  • UI : 即架构中的core services, 构成此容器的代码是Harbor项目的主体
  • Mysql : 由官方MySql镜像构成的数据库容器
  • Log : 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志

这几个 Contianer 通过 Docker link 的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy(即Nginx)的服务端口

hexo_docker_harbor_contianer

四、访问 Web UI 并测试

4.1、主页

默认的访问地址即为 harbor.cfg 中 hostname 地址,直接访问即可,如下

hexo_docker_harbor_homepage

如果 harbor.cfg 中 self_registration 属性设置为 off,那么普通用户将无法自己实现注册,只能由管理员创建用户,主页右上角的注册按钮也会消失。

4.2、登录

Harbor 默认管理员用户为 admin,密码在 harbor.cfg 中设置过,默认的是 Harbor12345,可直接登陆

hexo_docker_harbor_userspace

4.3、创建私有项目

Harbor 有一个项目的概念,项目名可以理解为 Docker Hub 的用户名,其下可以后很多 images,Harbor 的项目必须登录后方可 push,公有项目和私有项目的区别是对其他用户是否可见

hexo_docker_harbor_createproject

4.4、push 镜像

4.4.1、设置 http 仓库地址

由于采用了默认的 http 方式连接,而 Docker 认为这是不安全的,所以在 push 之前需要调整一下 docker 配置,编辑 /etc/default/docker 增加如下内容

DOCKER_OPTS="$DOCKER_OPTS --insecure-registry 10.211.55.17"

其中 IP 地址要指向 harbor.cfg 中的 hostname,然后执行 docker-compose stop 停掉所有 Contianer,再执行 service docker restart 重启 Dokcer 服务,最后执行 docker-compose start 即可。

注意 : Docker 服务重启后,执行 docker-compose start 时有一定几率出现如下错误(或者目录已存在等错误),此时在 docker-compose stop 一下然后在启动即可,实在不行再次重启 Dokcer 服务,千万不要手贱的去删文件(别问我怎么知道的)

hexo_docker_harbor_composeerror

4.4.2、Harbor 项目和权限(角色)

用户本身拥有的项目,登陆后可直接 push,其他的用户创建的项目取决于项目是否添加了对应用户和权限,

也就是说用户是否可以向一个项目 push 镜像,取决于权限(角色)设置,如下所示,在项目中可以设置成员和其权限

hexo_docker_harbor_projectuser

hexo_docker_harbor_projectuserrole

对于权限(角色),Project Admin 和 Developer 可以有 push 的权限,而 Guest 只能查看和 pull

4.4.3、push 镜像

首先使用一个对目标项目具有 push 权限的用户登录,以下 push 的目标是 mritd 项目,test1 用户在项目里定义为 Developer,所以登录后 push 即可

hexo_docker_harbor_loginmritd

然后 tag 一个 image,名称一定要标准( registryAddress[:端口]/项目/imageName[:tag] ),最后将其 push 即可

hexo_docker_harbor_pushmritdimages

最后可在 Web UI 中查看刚刚 push 的 image

hexo_docker_harbor_mritdshow

这篇关于Harbor 企业级 Docker Registry 初试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997977

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4