自建带有认证功能的Docker Harbor

What is Harbor?



Harbor is an open source cloud native registry that stores, signs, and scans container images for vulnerabilities.

Harbor solves common challenges by delivering trust, compliance, performance, and interoperability. It fills a gap for organizations and applications that cannot use a public or cloud-based registry, or want a consistent experience across clouds.

Harbor 的安装配置



系统安装运行需求和建议:

1. 一台独立的linux host centos 7.4,docker 17.03.0-ce+以上版本,docker-compose 1.10.0+ .

2. 下载Harbor离线安装包进行安装

3. 自定义Harbor服务器的域名:reg.yujianbo.vip

安装步骤:

1. 安装docker

yum remove -y docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum list docker-ce.x86_64  --showduplicates | sort -r
#列出可以安装的docker版本
yum -y install docker-ce-17.06.2.ce
#安装指定版本的dockermkdir -p /lib/systemd/system/docker.service.d

cat > /lib/systemd/system/docker.service.d/docker.conf << ‘EOF‘
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --default-ulimit nofile=65536
EOF

#--default-ulimit有bug,暂时无法放到/etc/docker/daemon.json里

mkdir -p /etc/docker/
mkdir -p  /srv/docker/
cat > /etc/docker/daemon.json << EOF
{
    "dns": [
        "114.114.114.114",
        "8.8.8.8"
    ],
    "data-root": "/srv/docker/",
    "hosts": [
        "unix:///var/run/docker.sock"
    ],
    "registry-mirrors": [
        "https://0sr73mco.mirror.aliyuncs.com"
    ],
    "insecure-registries": [
        "reg.yujianbo.vip"
    ]
}
EOF

# "hosts": ["unix:///var/run/docker.sock","tcp://127.0.0.1:2375"],
#"registry-mirrors": ["https://registry.docker-cn.com"],中国docker hub专用地址,docker官方提供

systemctl daemon-reload
systemctl start docker
systemctl enable docker
docker info
docker version

2.安装docker-compose

yum -y install python-pip
pip install --upgrade pip
pip install docker-compose
docker-compose version

3.下载Harbor离线安装包进行安装

mkdir -p /srv/harbor/
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.2.tgz
#去https://github.com/goharbor/harbor/releases查找stable版本,当前最新stable版本是v1.5.2
tar zxf harbor-offline-installer-v1.5.2.tgz
cd harbor
sed -i "s#hostname = reg.mydomain.com#hostname = reg.yujianbo.vip#g" harbor.cfg
#修改harbor的hostname为咱们自定义的reg.yujianbo.vip
sh install.sh
#开始自动安装Harbor,直到成功

安装完成后可以通过http://reg.yujianbo.vip访问Harbor,默认账号密码:admin/Harbor12345

你没有公网域名解析的话可以在/etc/hosts中指定reg.yujianbo.vip和ip地址的对应关系

4.使用Harbor push images

docker login reg.yujianbo.vip
#输入账号密码
docker pull nginx
#从docker hub拉取最新的nginx镜像
docker tag nginx reg.yujianbo.vip/library/nginx
docker push reg.yujianbo.vip/library/nginx
#将nginx镜像push到我们的harbor的默认的library项目中去#登陆http://reg.yujianbo.vip就可以在项目library中看到我们刚刚push上去的镜像了

5.配置Harbor使用微软的活动目录active directory进行登陆认证

#ldap://10.1.1.227是微软的DC服务器的地址

#cn=test,ou=AAA,dc=local,dc=com  test是普通的用户,AAA是自定义建立的OU,dc=local,dc=com是域控制器的域名

#LDAP搜索密码是普通用户的密码

#LDAP基础DN,指定只有在ou=AAA,dc=local,dc=com里面创建的用户才能登陆Harbor

#LDAP用户UID的属性:sAMAccountName

下图是微软的活动目录active directory的用户管理页面,其本质上也是一个LDAP服务器,

我个人比较倾向于将所有支持LDAP的服务都统一使用微软的活动目录active directory进行认证,方便企业管理

这样每个员工之开通一个账号就可以登陆公司的所有系统了,比如gitlab,禅道,路由器,防火墙,SVN,

6.使用阿里云的OSS代替默认的本地文件存储

cat /srv/harbor/common/templates/registry/config.yml
...
storage:
  oss:
    accesskeyid: 填写你的具有阿里云oss权限账户的RAM的AccessKey ID
    accesskeysecret: 填写你的具有阿里云oss权限账户的RAM的AccessKey ID
    region: oss-cn-beijing
    endpoint: yujianbo-harbor.oss-cn-beijing.aliyuncs.com
    bucket: yujianbo-harbor
    secure: false
...

申请一个阿里云的OSS,创建一个bucket: yujianbo-harbor;在oss的信息中可以查看到endpoint地址;

region 需要你确定你是在哪个地区开通的OSS,可以在https://help.aliyun.com/document_detail/31837.html 查询;

使用阿里云oss可以避免存储的单点故障,阿里云oss还具有共享存储的特点

使用其他的存储类型可以参考: https://docs.docker.com/registry/configuration/#storage

7.Harbor服务的维护

如果只是想简单的重启Harbor服务,可以使用如下命令

docker-compose stop
docker-compose start

如果修改的配置文件想让新的配置文件生效,需要如下操作

docker-compose down -v
...
vim /srv/harbor/harbor.cfg
vim /srv/harbor/common/templates/registry/config.yml
...
prepare
docker-compose up -d

#上面是修改Harbor的配置文件及使用阿里云oss的存储配置文件

docker-compose ps命令可以方面的查看Harbor的各个组件是否正常的启动起来

docker-compose ps
       Name                     Command                  State                            Ports
---------------------------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/start.sh                 Up (healthy)
harbor-db            /usr/local/bin/docker-entr ...   Up (healthy)   3306/tcp
harbor-jobservice    /harbor/start.sh                 Up
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-ui            /harbor/start.sh                 Up (healthy)
nginx                nginx -g daemon off;             Up (healthy)   0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp,
                                                                     0.0.0.0:80->80/tcp
redis                docker-entrypoint.sh redis ...   Up             6379/tcp
registry             /entrypoint.sh serve /etc/ ...   Up (healthy)   5000/tcp    

8.Harbor数据持久化的路径

数据默认存储: /data/

日志默认存储:/var/log/harbor/

9.启动Harbor的https功能

cat /srv/harbor/harbor.cfg
......
#set hostname
hostname = reg.yujianbo.vip
#set ui_url_protocol
ui_url_protocol = https
......
#The path of cert and key files for nginx, they are applied only the protocol is set to https
ssl_cert = /root/cert/reg.yujianbo.vip.crt
ssl_cert_key = /root/cert/reg.yujianbo.vip.key
......

只需要配置三个地方:

ui_url_protocol = https

ssl_cert = /root/cert/reg.yujianbo.vip.crt

ssl_cert_key = /root/cert/reg.yujianbo.vip.key

10.Email settings

Email settings只是在使用harbor本地认证时,忘记密码或注册账号时用到,使用LDAP认证就不需要配置这个选项了

Harbor官网:https://goharbor.io/

Harbor github地址:https://github.com/goharbor/harbor

Harbor安装配置向导:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

原文地址:https://www.cnblogs.com/yjb007/p/9532873.html

时间: 2024-11-01 11:02:59

自建带有认证功能的Docker Harbor的相关文章

docker私有仓库(认证功能)

搭建docker私有仓库,带认证功能,记录如下: 1.创建对应的目录 mkdir -p /data/registry/ && cd /data/registry/ && mkdir auth certs 2.创建密码文件 cd /data/registry/ docker run --entrypoint htpasswd daocloud.io/registry:2.2 -Bbn ttxsgoto ttxsgoto > auth/htpasswd 3.生成签名证书

ajax中网页传输(一)TEXT——带有删除功能的数据库表格显示练习

网页之间传输的三种方式:TEXT.JSON.XML. 本章将讲解带有TEXT形势的ajax网页传输 第一:body部分代码 <title>ajax中TEXT讲解并且带有删除功能的表格</title> <script src="jquery-2.0.0.min.js"></script> <style type="text/css"> .sc { width:70px; height:30px; backgr

邮件服务器(三)——centos6.5安装配置dovecot并实现sasl认证功能

一.安装配置dovecot 1.dovecot简介 Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持四种协议:pop3(110/tcp), imap4(143/tcp), pop3s, imaps.POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议.其中,与 POP3 是从邮件服务器中下载邮件存起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理.操作. 2.安装dovecot # yum install dovecot -y 3.配置dovecot

带有支付功能的产品如何进行测试

软件测试人员在进行测试的时候,根据测试项目或者测试对象的不同,会采用不同的方式方法来进行测试,那么,带有支付功能的产品该如何测试呢?在测试过程中又应该注意些什么?        财务人员有句老话叫:财务无小事.因为,首先,任何涉及到财务的问题,不论金额有多么的小,它在性质上也是严重事件:其次,在各种金融支付功能已深入老百姓生活的方方面面的今天,一个程序中,哪怕仅有一个小小的支付问题,那么,最后引起的也可能是涉及成百上千乃至上亿元金额和大量用户的大问题.        因此,专业的测试人员,在对待

centos 6.5 httpd 自建CA 认证 实现 https 服务

httpd 自建CA 认证 实现 https 服务 需要的软件: httpd mod_ssl openssl [[email protected] CA]# httpd -v #httpd版本 Server version: Apache/2.2.15 (Unix) Server built:   Jul 23 2014 14:15:00 [[email protected] CA]# uname -r #内核版本 2.6.32-431.el6.i686 [[email protected] C

定义有参装饰器为被装饰函数添加认证功能,定义有参装饰器为被装饰函数添加认证功能,三次验证失败锁定用户

#需求:定义有参装饰器为被装饰函数添加认证功能,用户信息的来源可以是文件也可以是ldap # 三次验证失败锁定用户 1 def menu(): 2 #用户交互界面 3 user_name = input("请输入在用户名:") 4 password = input("请输入密码:") 5 return user_name,password #以元组形式返回值 6 ''' 7 alex1 1111 8 alex2 2222 9 egon3 3333 10 ''' 11

[Linux] centos 6.5 httpd 自建CA 认证 实现 https 服务

httpd 自建CA 认证 实现 https 服务 需要的软件: httpd mod_ssl openssl 本文将CA证书服务器和 httpd服务器放到一台物理机器上实现的, 可以作为学习的参考. 本文测试主机IP192.168.1.100/24 [[email protected] CA]# httpd -v #httpd版本 Server version: Apache/2.2.15 (Unix) Server built: Jul 23 2014 14:15:00 [[email pro

安装vsftpd+pam+mysql实现对虚拟用户身份认证功能

安装vsftpd+pam+mysql来实现对虚拟用户身份认证功能 事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的:mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28.这里不再介绍安装步骤,前面已经详细介绍过.由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能. 一.安装所需要程序 1.事先安装好开发环境和m

发送带有认证信息的HTTP请求并取回响应

问题 如何发送 一个带有网络认证证书的HTTP请求并返回相应的HTTP响应. 设计 创建一个WebRequest对象和一个NetWorkCredential对象.把NetWorkCredential对象作为WebRequest对象的Credentials的属性赋给它并且通过WebRequest.GetResponse()方法返回HTTP响应. 方案 public static void Credential() { string url = "http://server/path/webform