<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      【Harbor學(xué)習(xí)筆記】-教你快速搭建Docker私有倉(cāng)庫(kù)

      Docker容器應(yīng)用的開(kāi)發(fā)和運(yùn)行離不開(kāi)可靠的鏡像管理,雖然Docker官方也提供了公共的鏡像倉(cāng)庫(kù),但是從安全和效率等方面考慮,部署我們私有環(huán)境內(nèi)的Registry也是非常必要的。Harbor 是由VMware公司開(kāi)源的企業(yè)級(jí)的Docker Registry管理項(xiàng)目,它包括權(quán)限管理(RBAC)、LDAP、日志審核、管理界面、自我注冊(cè)、鏡像復(fù)制和中文支持等功能。

      Harbor 的所有組件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。

      注: 由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必須 > = 1.10.0 docker-compose >= 1.6.0

      Harbor的目標(biāo)是幫助用戶迅速搭建一個(gè)企業(yè)級(jí)的Docker registry服務(wù)。它以Docker公司開(kāi)源的registry為基礎(chǔ),額外提供了如下功能:

      • 基于角色的訪問(wèn)控制(Role Based Access Control)
      • 基于策略的鏡像復(fù)制(Policy based image replication)
      • 鏡像的漏洞掃描(Vulnerability Scanning)
      • AD/LDAP集成(LDAP/AD support)
      • 鏡像的刪除和空間清理(Image deletion & garbage collection)
      • 友好的管理UI(Graphical user portal)
      • 審計(jì)日志(Audit logging)
      • RESTful API
      • 部署簡(jiǎn)單(Easy deployment)

      架構(gòu)圖

      Harbor的每個(gè)組件都是以Docker容器的形式構(gòu)建的,可以使用Docker Compose來(lái)進(jìn)行部署。如果環(huán)境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。

      Harbor大概需要以下幾個(gè)容器組成:ui(Harbor的核心服務(wù))、log(運(yùn)行著rsyslog的容器,進(jìn)行日志收集)、mysql(由官方mysql鏡像構(gòu)成的數(shù)據(jù)庫(kù)容器)、Nginx(使用Nginx做反向代理)、registry(官方的Docker registry)、adminserver(Harbor的配置數(shù)據(jù)管理器)、jobservice(Harbor的任務(wù)管理服務(wù))、redis(用于存儲(chǔ)session)。

      Harbor是一個(gè)用于存儲(chǔ)和分發(fā)Docker鏡像的企業(yè)級(jí)Registry服務(wù)器,整體架構(gòu)還是很清晰的。下面借用了網(wǎng)上的架構(gòu)圖:

      Harbor依賴的外部組件

      • -> Nginx(即Proxy代理層): Nginx前端代理,主要用于分發(fā)前端頁(yè)面ui訪問(wèn)和鏡像上傳和下載流量; Harbor的registry,UI,token等服務(wù),通過(guò)一個(gè)前置的反向代理統(tǒng)一接收瀏覽器、Docker客戶端的請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給后端不同的服務(wù)。

      • -> Registry v2: 鏡像倉(cāng)庫(kù),負(fù)責(zé)存儲(chǔ)鏡像文件; Docker官方鏡像倉(cāng)庫(kù), 負(fù)責(zé)儲(chǔ)存Docker鏡像,并處理docker push/pull命令。由于我們要對(duì)用戶進(jìn)行訪問(wèn)控制,即不同用戶對(duì)Docker image有不同的讀寫(xiě)權(quán)限,Registry會(huì)指向一個(gè)token服務(wù),強(qiáng)制用戶的每次docker pull/push請(qǐng)求都要攜帶一個(gè)合法的token, Registry會(huì)通過(guò)公鑰對(duì)token進(jìn)行解密驗(yàn)證。

      • -> Database(MySQL或Postgresql):為core services提供數(shù)據(jù)庫(kù)服務(wù),負(fù)責(zé)儲(chǔ)存用戶權(quán)限、審計(jì)日志、Docker image分組信息等數(shù)據(jù)。

      Harbor自有組件

      • -> Core services(Admin Server): 這是Harbor的核心功能,主要提供以下服務(wù):
        • -> UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image), 并對(duì)用戶進(jìn)行授權(quán)。
        • -> webhook:為了及時(shí)獲取registry 上image狀態(tài)變化的情況, 在Registry上配置webhook,把狀態(tài)變化傳遞給UI模塊。
        • -> Auth服務(wù):負(fù)責(zé)根據(jù)用戶權(quán)限給每個(gè)docker push/pull命令簽發(fā)token. Docker 客戶端向Regi?stry服務(wù)發(fā)起的請(qǐng)求,如果不包含token,會(huì)被重定向到這里,獲得token后再重新向Registry進(jìn)行請(qǐng)求。
        • -> API: 提供Harbor RESTful API
      • -> Replication Job Service:提供多個(gè) Harbor 實(shí)例之間的鏡像同步功能。
      • -> Log collector:為了幫助監(jiān)控Harbor運(yùn)行,負(fù)責(zé)收集其他組件的log,供日后進(jìn)行分析。

      核心組件

      • Proxy:一個(gè)nginx的前端代理,代理Harbor的registry,UI, token等服務(wù)。-通過(guò)深藍(lán)色先標(biāo)識(shí)

      • db:負(fù)責(zé)儲(chǔ)存用戶權(quán)限、審計(jì)日志、Dockerimage分組信息等數(shù)據(jù)。

      • UI:提供圖形化界面,幫助用戶管理registry上的鏡像, 并對(duì)用戶進(jìn)行授權(quán)。

      • jobsevice:jobsevice是負(fù)責(zé)鏡像復(fù)制工作的,他和registry通信,從一個(gè)registry pull鏡像然后push到另一個(gè)registry,并記錄job_log。通過(guò)紫色線標(biāo)識(shí)

      • Adminserver:是系統(tǒng)的配置管理中心附帶檢查存儲(chǔ)用量,ui和jobserver啟動(dòng)時(shí)候回需要加載adminserver的配置。通過(guò)灰色線標(biāo)識(shí);

      • Registry:鏡像倉(cāng)庫(kù),負(fù)責(zé)存儲(chǔ)鏡像文件。當(dāng)鏡像上傳完畢后通過(guò)hook通知ui創(chuàng)建repository,上圖通過(guò)紅色線標(biāo)識(shí),當(dāng)然registry的token認(rèn)證也是通過(guò)ui組件完成。通過(guò)紅色線標(biāo)識(shí)

      • Log:為了幫助監(jiān)控Harbor運(yùn)行,負(fù)責(zé)收集其他組件的log,供日后進(jìn)行分析。過(guò)docker的log-driver把日志匯總到一起,通過(guò)淺藍(lán)色線條標(biāo)識(shí)

      安裝

      1. 下載離線安裝包

      • Harbor以容器的形式進(jìn)行部署, 因此可以被部署到任何支持Docker的Linux發(fā)行版, 要使用Harbor,需要安裝docker和docker-compose編排工具

      • 訪問(wèn)harbor release page,下載Harbor軟件tgz壓縮包

      • 或執(zhí)行如下命令 wget https://storage.googleapis.com/harbor-releases/release-2.0.0/harbor-offline-installer-latest.tgz

      • 解壓tgz壓縮包

        tar xvf harbor-offline-installer-<version>.tgz

      2. 配置 harbor.cfg (harbor.yml)

      注: 新版本是.yaml文件,之前版本是.conf 或者 .cfg文件

      • 解壓后文件在當(dāng)前目錄下的harbor/目錄下

        cd harbor/
        vim harbor.cfg
        harbor_admin_password = Harbor12345
        

      3. 啟動(dòng) Harbor

      • 配置完后,執(zhí)行安裝腳本 ./install.sh

        #會(huì)拉取好幾個(gè)鏡像下來(lái),及檢查環(huán)境
        Note: docker version: 1.12.5
        Note: docker-compose version: 1.9.0
        
        [Step 0]: checking installation environment ...
        ....
        [Step 1]: loading Harbor images ...
        ....
        [Step 2]: preparing environment ...
        ....
        [Step 3]: checking existing instance of Harbor ...
        ....
        [Step 4]: starting Harbor ...
        ? ----Harbor has been installed and started successfully.----
        ...
        For more details, please visit https://github.com/vmware/harbor .
        

        安裝完成后,會(huì)發(fā)現(xiàn)解壓目錄harbor下面多了一個(gè)docker-compose.yml文件,里面包含了harbor依賴的鏡像和對(duì)應(yīng)容器創(chuàng)建的信息

      • 執(zhí)行 docker-compose ps (執(zhí)行docker-compose需在包含docker-compose.yml的目錄) , 確保 container 的狀態(tài)都是up (healthy).

      • 如果安裝一切順利,通過(guò)之前在harbor.cfg配置的hostname即可以訪問(wèn)到前端了.

      安裝配置問(wèn)題

      Harbor安裝 之后,需要用docker-compose ps 命令去查看狀態(tài),保證所有docker 容器都是 healthy, 否則 很可能login harbor 失敗

      如果那個(gè)service 啟動(dòng)不正常,就去查看/var/log/harbor/ 下對(duì)應(yīng)的log

      owen@swarm-node-107:/disk/harbor_v2.0.0$ ls /var/log/harbor/ -lht
      總用量 22M
      -rw-r--r-- 1 10000 10000 3.5M 12月 15 23:03 registryctl.log
      -rw-r--r-- 1 10000 10000 5.4M 12月 15 23:02 core.log
      -rw-r--r-- 1 10000 10000 4.4M 12月 15 23:02 portal.log
      -rw-r--r-- 1 10000 10000 4.9M 12月 15 23:02 registry.log
      -rw-r--r-- 1 10000 10000 1.2M 12月 15 23:02 proxy.log
      -rw-r--r-- 1 10000 10000 392K 12月 15 23:00 redis.log
      -rw-r--r-- 1 10000 10000 1.6M 12月 15 23:00 jobservice.log
      -rw-r--r-- 1 10000 10000  53K 12月 14 21:42 postgresql.log
      -rw-r--r-- 1 10000 10000  65K 7月   7 23:35 clair.log
      -rw-r--r-- 1 10000 10000 1.2K 7月   5 11:43 clair-adapter.log
      -rw-r--r-- 1 10000 10000 1.4K 7月   5 11:38 chartmuseum.log
      

      修改harbor的運(yùn)行配置,需要如下步驟:

      # 停止 harbor
       docker-compose down -v
      # 修改配置
       vim harbor.cfg
      # 執(zhí)行./prepare已更新配置到docker-compose.yml文件
       ./prepare
      # 啟動(dòng) harbor
       docker-compose up -d
      

      問(wèn)題-1 服務(wù)啟動(dòng)異常

      ubuntu@172-20-16-51:/opt/harbor$ docker login 192.20.16.51
      Username: admin
      Password:
      Error response from daemon: login attempt to http://192.20.16.51/v2/ failed with status: 502 Bad Gateway

      Harbor-db service 不能正常啟動(dòng),最后查看postgresql.log 發(fā)現(xiàn)下面 message.

       | initdb: directory "/var/lib/postgresql/data" exists but is not empty
       | If you want to create a new database system, either remove or empty
       | the directory "/var/lib/postgresql/data" or run initdb
       | with an argument other than "/var/lib/postgresql/data".
      

      因?yàn)楫?dāng)時(shí)/data/datebase 目錄下,確實(shí)不是empty, 手動(dòng)改了docker-compose.yml ,然后 docker-compose up -d 重新啟動(dòng)容器,服務(wù)正常

        postgresql:
          image: goharbor/harbor-db:v2.0.0
          container_name: harbor-db
          restart: always
          cap_drop:
            - ALL
          cap_add:
            - CHOWN
            - DAC_OVERRIDE
            - SETGID
            - SETUID
          volumes:
            - /data/database:/var/lib/postgresql/data:z
      

      問(wèn)題-2- dial tcp xxx.xxx.xxx.xxx:443: connect: connection refused

      # docker login 192.20.16.51:80
      Username: admin
      Password:
      Error response from daemon: Get https://192.20.16.51:80/v2/: http: server gave HTTP response to HTTPS client
      或者
      Error response from daemon: Get https://192.168.31.107/v2/: dial tcp 192.168.31.107:443: connect: connection refused
      

      docker1.3.2版本開(kāi)始默認(rèn)docker registry使用的是https,·Harbor默認(rèn)安裝使用的是HTTP協(xié)議·,所以當(dāng)執(zhí)行用docker login、pull、push等命令操作非https的docker regsitry的時(shí)就會(huì)報(bào)錯(cuò)。

      臨時(shí)解決辦法:需要在每一臺(tái)harbor客戶端機(jī)器都要設(shè)置"insecure-registries" (徹底解決需要啟動(dòng)Harbor HTTPS證書(shū))

      • 如果系統(tǒng)是MacOS,則可以點(diǎn)擊“Preference”里面的“Advanced”在“Insecure Registry”里加上hostname (e.g. docker.bksx.com),重啟Docker客戶端就可以了。

      • 如果系統(tǒng)是Ubuntu,則修改配置文件/lib/systemd/system/docker.service,修改[Service]下ExecStart參數(shù),增加–insecure-registry hostname (e.g. docker.bksx.com)

      • 如果系統(tǒng)是Centos,可以修改配置/etc/sysconfig/docker,將OPTIONS增加 –insecure-registry hostname (e.g. docker.bksx.com)

      如果是新版本的docker在/etc/sysconfig/ 沒(méi)有docker這個(gè)配置文件的情況下。

      #在daemon.json中添加以下參數(shù)
      [root@localhost harbor]# cat /etc/docker/daemon.json
      {
        "insecure-registries": [
          "hostname"
        ]
      }
      

      注意:該文件必須符合 json 規(guī)范,否則 Docker 將不能啟動(dòng)。另外hostname 必須與harbor.cfg 里的hostname 一致。

      添加完了后重新啟動(dòng) docker:systemctl daemon-reload && systemctl enable docker && systemctl restart docker

      登錄后,賬號(hào)信息都保存到本機(jī)的~/.docker/config.json

      owen@swarm-manager-105:~/gitee/vnote_notebooks$ docker login 192.168.31.107
      Username: admin
      Password: 
      WARNING! Your password will be stored unencrypted in /home/owen/.docker/config.json.
      Configure a credential helper to remove this warning. See
      https://docs.docker.com/engine/reference/commandline/login/#credentials-store
      
      Login Succeeded
      owen@swarm-manager-105:~/gitee/vnote_notebooks$ cat ~/.docker/config.json 
      {
      	"auths": {
      		"192.168.31.107": {
      			"auth": "YWRtaW46SGFyYm9yMTIzNDU="
      		}
      	},
      	"HttpHeaders": {
      		"User-Agent": "Docker-Client/19.03.14 (linux)"
      	}
      
      

      問(wèn)題-3 防止容器進(jìn)程沒(méi)有權(quán)限讀取生成的配置

      posted @ 2020-12-16 00:06  DevOps在路上  閱讀(969)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 深夜免费av在线观看| 国产乱码日韩精品一区二区| 亚洲av鲁丝一区二区三区黄| 国产精品色一区二区三区| 狠狠做五月深爱婷婷伊人| 亚洲人妻一区二区精品| 久久精品免视看国产成人| 亚洲熟妇在线视频观看| 国产又色又爽又黄的视频在线 | 亚洲色最新高清AV网站| 97免费人妻在线视频| 国产精品美女黑丝流水| 中日韩黄色基地一二三区| 性色a∨精品高清在线观看| 久久亚洲精品无码播放| 欧美变态另类牲交| 99久久无码私人网站| 放荡的少妇2欧美版| 午夜福利宅福利国产精品| 99精品国产一区二区电影| 日韩精品成人一区二区三区| 天干天干夜啦天干天干国产| 国产短视频精品一区二区| 91久久久久无码精品露脸| 亚洲精品美女一区二区| 日韩丝袜欧美人妻制服| 成人自拍小视频免费观看| 亚洲欧美中文日韩V日本| 热久久美女精品天天吊色| 99久久机热/这里只有精品| 国产免费视频一区二区| 中国少妇无码专区| 亚洲精品一二三伦理中文| 日产国产一区二区不卡| 麻豆国产传媒精品视频| 和黑人中出一区二区三区| 国产精品制服丝袜白丝| 欧美福利在线| 成年女性特黄午夜视频免费看| 中文字幕网红自拍偷拍视频| 久热这里只有精品12|