Docker Registry--harbor安装和简单使用szyd

发布时间:2021-11-10 17:39:46 作者:柒染
来源:亿速云 阅读:314

Docker Registry--harbor安装和简单使用szyd ,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1.什么是harbor

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

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 下并给与可执行权限即可。

3.搭建 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

Docker Registry--harbor安装和简单使用szyd

3.4、编译 image 并启动

cd harbor/Deploy/
docker-compose up -d

Docker Registry--harbor安装和简单使用szyd

3.5、启动后相关容器

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

Docker Registry--harbor安装和简单使用szyd

4.访问 Web UI 并测试

4.1、主页

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

Docker Registry--harbor安装和简单使用szyd

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

4.2、登录

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

Docker Registry--harbor安装和简单使用szyd

4.3、创建私有项目

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

Docker Registry--harbor安装和简单使用szyd

4.4、push 镜像

4.4.1、设置 http 仓库地址

由于采用了默认的 http 方式连接,而 Docker 认为这是不安全的,所以在 push 之前需要调整一下 docker 配置,修改/lib/systemd/system/docker.service文件,添加--insecure-registry 172.16.80.182,重启docker daemon 和service
(命令:systemctl daemon-reload 和 systemctl restart docker.service)。

ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry 172.16.81.99

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

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

Docker Registry--harbor安装和简单使用szyd

4.4.2、Harbor 项目和权限(角色)
用户本身拥有的项目,登陆后可直接 push,其他的用户创建的项目取决于项目是否添加了对应用户和权限,
也就是说用户是否可以向一个项目 push 镜像,取决于权限(角色)设置,如下所示,在项目中可以设置成员和其权限

Docker Registry--harbor安装和简单使用szyd

Docker Registry--harbor安装和简单使用szyd

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

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

Docker Registry--harbor安装和简单使用szyd

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

(如果本地有的image,是不会去Registry库中查找的!(查找顺序是先找本地,后查找Registry库,默认库是docker hub)
设置首选Registry库可以通过 --insecure-registry 参数指定。
image的格式是$registry_url/name:tag  $registry_url是Registry库的链接地址,pull push是通过这个地址来判断的。
后面的端口号,可以通过加一个proxy来解决!
)

Docker Registry--harbor安装和简单使用szyd

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

Docker Registry--harbor安装和简单使用szyd

看完上述内容,你们掌握Docker Registry--harbor安装和简单使用szyd 的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. 安装单docker 简单使用命令
  2. Docker入门与简单使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker registry harbor

上一篇:Linux下如何让awk使用Shell变量

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》