1. 程式人生 > >自建帶有認證功能的Docker Harbor

自建帶有認證功能的Docker Harbor

域名 mas tab com 求和 port 簡單的 help github

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基礎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

自建帶有認證功能的Docker Harbor