Harbor企業鏡像倉庫部署(本地)

簡述:

Docker 官方鏡像倉庫是用于管理公共鏡像的地方,大家可以在上面找到想要的鏡像,也可以把自己的鏡像推送上去。但是有時候服務器無法訪問互聯網,或者不希望將自己的鏡像放到互聯網上,那么就需要用到 Docker Registry 私有倉庫,它可以用來存儲和管理自己的鏡像。最近公司將項目全部打包成鏡像有部署私有倉庫服務的需求,經過幾輪商討,最終選擇 Docker Harbor,Docker Harbor 有可視化的 Web 管理界面可以方便管理Docker 鏡像操作也很方便簡單,又提供了多個項目的鏡像權限管理控制功能等。

Harbor 架構構成

  1. Proxy:Harbor 的 Registry、UI、token 等服務。通過一個前置的反向代理統一接收瀏覽器Docker 客戶端的請求,并將請求轉發給后端不同的服務。
  2. Registry:負責儲存Docker鏡像,并處理 Docker push/pull 命令。由于要對用戶進行訪問控制,即不同用戶對Docker image有不同的讀寫權限,Registry會指向一個 token服務,強制用戶的每次 Docker pull/push 請求都要攜帶一個合法的token,Registry會通過公鑰對 token 進行解密驗證。

環境:

兩臺主機:

192.168.50.66????? master??????? 服務端

192.168.50.53????? lbin-nfs?????? 客戶端

兩臺主機同樣操作

關閉防火墻

[root@localhost ~]# iptables -F

[root@localhost ~]# setenforce 0

[root@localhost ~]# systemctl stop firewalld

更改主機名

[root@localhost ~]# hostname master

[root@localhost ~]# bash

創建dockers? rpm包目錄

[root@master ~]# mkdir docker

導入docker -ce

[root@master docker]# ll

總用量 97596

-rw-r--r--. 1 root root 30374084 9月 ?18 2020 containerd.io-1.3.7-3.1.el7.x86_64.rpm

-rw-r--r--. 1 root root ???40816 7月 ??6 2020 container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm

-rw-r--r--. 1 root root ??302564 5月 ?14 2020 device-mapper-1.02.164-7.el7_8.2.x86_64.rpm

-rw-r--r--. 1 root root ??195448 5月 ?14 2020 device-mapper-event-1.02.164-7.el7_8.2.x86_64.rpm

-rw-r--r--. 1 root root ??195004 5月 ?14 2020 device-mapper-event-libs-1.02.164-7.el7_8.2.x86_64.rpm

-rw-r--r--. 1 root root ??331908 5月 ?14 2020 device-mapper-libs-1.02.164-7.el7_8.2.x86_64.rpm

-rw-r--r--. 1 root root ??432624 4月 ??4 2020 device-mapper-persistent-data-0.8.5-2.el7.x86_64.rpm

-rw-r--r--. 1 root root 25268380 9月 ?18 2020 docker-ce-19.03.13-3.el7.x86_64.rpm

-rw-r--r--. 1 root root 40247476 10月 ?9 2020 docker-ce-cli-19.03.13-3.el7.x86_64.rpm

-rw-r--r--. 1 root root ?1384208 5月 ?14 2020 lvm2-2.02.186-7.el7_8.2.x86_64.rpm

-rw-r--r--. 1 root root ?1143916 5月 ?14 2020 lvm2-libs-2.02.186-7.el7_8.2.x86_64.rpm

[root@localhost docker]# yum -y install *.rpm

[root@localhost docker]# cd

重啟

[root@localhost ~]# ?systemctl start docker

[root@localhost ~]# ?systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

配置阿里云鏡像加速

[root@localhost ~]# ?cat << END > /etc/docker/daemon.json

> {

> ????????"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

> }

> END

重啟服務

?

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl restart docker

獲取Docker Compose容器的工具。

[root@localhost ~]# rz

[root@localhost ~]# mv docker-compose /usr/bin

[root@localhost ~]# ?chmod +x /usr/bin/docker-compose

[root@localhost ~]# docker-compose --version

docker-compose version 1.21.1, build 5a3f1a3

Harbor配置?? 服務端

?

[root@master ~]# tar xf harbor-offline-installer-v1.6.1.tgz

[root@master ~]# cd harbor

[root@master harbor]# tree

bash: tree: 未找到命令

[root@master harbor]# yum -y install tree

[root@master harbor]# tree ha
ha
├── docker-compose.clair.tpl
├── docker-compose.clair.yml
├── docker-compose.tpl
├── docker-compose.yml
├── initial-registry.sql
└── sample
??? ├── active_active
??? │?? ├── check.sh
??? │?? └── keepalived_active_active.conf
??? └── active_standby
??????? ├── check_harbor.sh
??????? └── keepalived_active_standby.conf

[root@master ]#? vim /root/harbor/harbor.cfg

?7 hostname = 192.168.50.66

[root@master harbor]#? sh install.sh

如果報錯就更改下面文件

[root@master harbor]# cat ha/initial-registry.sql

CREATE DATABASE IF NOT EXISTS `registry` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

成功

?查看

[root@master harbor]# docker-compose ps

???????Name ????????????????????Command ?????????????????State ???????????????????Ports ????????????

----------------------------------------------------------------------------------------------------

harbor-adminserver ??/harbor/start.sh ????????????????Up (healthy) ?????????????????????????????????

harbor-db ???????????/entrypoint.sh postgres ?????????Up (healthy) ??5432/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 /etc/regist ... ??Up (healthy) ??5000/tcp ?

瀏覽器訪問

如果一切都正常,應該可以打開瀏覽器訪問192.168.50.66的管理頁面,默認的管理員用戶名和密碼是 admin/Harbor12345

創建一個新項目

  1. 輸入用戶名和密碼登錄界面后可以創建一個新項目。點擊“+項目”按鈕。

?

?點擊“確定”按鈕,成功創建

?

?可以使用 Docker 命令在Harbor本地通過 127.0.0.1 來登錄和推送鏡像了。默認情況下, Register 服務器在端口 80 上

登陸 harbor

[root@master harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

下載鏡像準備測試

[root@master harbor]# docker pull cirros

Using default tag: latest

latest: Pulling from library/cirros

d0b405be7a32: Pull complete

bd054094a037: Pull complete

c6a00de1ec8a: Pull complete

Digest: sha256:1e695eb2772a2b511ccab70091962d1efb9501fdca804eb1d52d21c0933e7f47

Status: Downloaded newer image for cirros:latest

docker.io/library/cirros:latest

給鏡像打tag

[root@master harbor]# docker tag cirros 127.0.0.1/cccoooo/cirros:v1

上傳到 harbor

[root@master harbor]# docker push 127.0.0.1/cccoooo/cirros:v1

The push refers to repository [127.0.0.1/cccoooo/cirros]

984ad441ec3d: Pushed

f0a496d92efa: Pushed

e52d19c3bee2: Pushed

v1: digest: sha256:483f15ac97d03dc3d4dcf79cf71ded2e099cf76c340f3fdd0b3670a40a198a22 size: 943

查看一下有沒有

[root@master harbor]# docker images

REPOSITORY ?????????????????????TAG ????????????????IMAGE ID ???????????CREATED ????????????SIZE

127.0.0.1/cccoooo/cirros ???????v1 ?????????????????f9cae1daf5f6 ???????2 years ago ????????12.6MB

刷新查看

客戶端上傳鏡像

?修改配置文件

?vim /usr/lib/systemd/system/docker.service

?14 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ?--insecure-reg istry192.168.50.66

重啟服務

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl restart docker

登陸訪問

第一種

[root@lbin-nfs ~]# ?docker login -u admin -p Harbor12345 http://192.168.50.66

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

第二種

[root@lbin-nfs ~]# docker login -u admin -p Harbor12345 192.168.50.66

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

下載鏡像準備測試

[root@lbin-nfs ~]# docker pull cirros

Using default tag: latest

latest: Pulling from library/cirros

d0b405be7a32: Pull complete

bd054094a037: Pull complete

c6a00de1ec8a: Pull complete

Digest: sha256:1e695eb2772a2b511ccab70091962d1efb9501fdca804eb1d52d21c0933e7f47

Status: Downloaded newer image for cirros:latest

docker.io/library/cirros:latest

打標簽

[root@lbin-nfs ~]# docker tag cirros 192.168.50.66/cccoooo/cirros:v22

上傳

[root@lbin-nfs ~]# docker push 192.168.50.66/cccoooo/cirros:v22

The push refers to repository [192.168.50.66/cccoooo/cirros]

984ad441ec3d: Layer already exists

f0a496d92efa: Layer already exists

e52d19c3bee2: Layer already exists

v22: digest: sha256:483f15ac97d03dc3d4dcf79cf71ded2e099cf76c340f3fdd0b3670a40a198a22 size: 943

瀏覽器查看

?Harbor 日常操作管理

點擊“+項目”時按規范填寫項目名稱。項目級別:私有即不勾選(勾選后會變為"公開")。如果設置為公共倉庫,則所有人對此項目下的鏡像擁有讀權限,命令行中不需要執行"Docker login"即可下載鏡像,鏡像操作與Docker hub 一致。

創建用戶

?

設置權限

?首先退出當前用戶,然后使用上述創建的賬戶 登錄。

退出

[root@lbin-nfs ~]# ?docker logout 192.168.50.66

Removing login credentials for 192.168.50.66

登陸

[root@lbin-nfs ~]# docker login 192.168.50.66

Username: asd

Password:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

下載v1鏡像

[root@lbin-nfs ~]# docker pull 192.168.50.66/cccoooo/cirros:v1

Error response from daemon: pull access denied for 192.168.50.66/cccoooo/cirros, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

[root@lbin-nfs ~]# docker pull 192.168.50.66/cccoooo/cirros:v1

v1: Pulling from cccoooo/cirros

Digest: sha256:483f15ac97d03dc3d4dcf79cf71ded2e099cf76c340f3fdd0b3670a40a198a22

Status: Downloaded newer image for 192.168.50.66/cccoooo/cirros:v1

192.168.50.66/cccoooo/cirros:v1

查看

[root@lbin-nfs ~]# docker images

REPOSITORY ????????????????????TAG ????????????????IMAGE ID ???????????CREATED ????????????SIZE

postgres ??????????????????????latest ?????????????07e2ee723e2d ???????19 months ago ??????374MB

mysql ?????????????????????????5.6 ????????????????dd3b2a5dcb48 ???????19 months ago ??????303MB

redis ?????????????????????????alpine ?????????????3900abf41552 ???????20 months ago ??????32.4MB

192.168.50.66/cccoooo/cirros ??v1 ?????????????????f9cae1daf5f6 ???????2 years ago ????????12.6MB

?查看日志

?

管理 Harbor

可以使用 docker-compose來管理Harbor。一些有用的命令如下所示(必須在與docker-compose.yml 相同的目錄中運行)。

停止/啟動/重啟 Harbor

[root@master harbor]# ?docker-compose stop | start | restart

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35090.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

越南的區塊鏈和NFT市場調研

越南的區塊鏈和NFT市場調研 基本介紹 https://zh.wikipedia.org/wiki/%E8%B6%8A%E5%8D%97 語言文字&#xff1a; 越南語&#xff0c; 文字以國語字&#xff08;越南羅馬字&#xff09;為主&#xff0c;漢喃文&#xff08;漢字&#xff09; 貨幣&#xff1a;越南盾 人口(2022…

Leetcode-每日一題【劍指 Offer 15. 二進制中1的個數】

題目 編寫一個函數&#xff0c;輸入是一個無符號整數&#xff08;以二進制串的形式&#xff09;&#xff0c;返回其二進制表達式中數字位數為 1 的個數&#xff08;也被稱為 漢明重量).&#xff09;。 提示&#xff1a; 請注意&#xff0c;在某些語言&#xff08;如 Java&…

如何安全地移動WSL 2 到另一個驅動器

當您擁有小型 SSD 并且適用于 Linux 的 Windows 子系統 (WSL) 的大小呈指數增長時&#xff0c;這真的很痛苦。沒有簡單的方法將 WSL 安裝移動到另一個驅動器。在這篇博客中&#xff0c;我將討論如何通過小步解決這個問題。 1.打開具有管理員訪問權限的 PowerShell或命令提示符…

【Docker】Windows下docker環境搭建及解決使用非官方終端時的連接問題

目錄 背景 Windows Docker 安裝 安裝docker toolbox cmder 解決cmder 連接失敗問題 資料獲取方法 背景 時常有容器方面的需求&#xff0c;經常構建調試導致測試環境有些混亂&#xff0c;所以想在本地構建一套環境&#xff0c;鏡像調試穩定后再放到測試環境中。 Windows …

多線程與高并發--------線程池

線程池 一、什么是線程池 在開發中&#xff0c;為了提升效率的操作&#xff0c;我們需要將一些業務采用多線程的方式去執行。 比如有一個比較大的任務&#xff0c;可以將任務分成幾塊&#xff0c;分別交給幾個線程去執行&#xff0c;最終做一個匯總就可以了。 比如做業務操…

Windows電腦快速搭建FTP服務教程

FTP介紹 FTP&#xff08;File Transfer Protocol&#xff09;是一種用于在計算機網絡上進行文件傳輸的標準協議。它提供了一種可靠的、基于客戶端-服務器模型的方式來將文件從一個主機傳輸到另一個主機。在本文中&#xff0c;我將詳細介紹FTP的工作原理、數據傳輸模式以及常見…

數據結構【第4章】——棧與隊列

隊列是只允許在一端進行插入操作、而在另-端進行刪除操作的線性表。 棧 棧與隊列&#xff1a;棧是限定僅在表尾進行插入和刪除操作的線性表。 我們把允許插入和刪除的一端稱為棧頂&#xff08;top&#xff09;&#xff0c;另一端稱為棧底&#xff08;bottom&#xff09;&…

VBA技術資料MF42:VBA_從Excel中上面的單元格復制公式

【分享成果&#xff0c;隨喜正能量】唯有夢想才配讓你不安&#xff0c;唯有行動才能解除你的不安.繩鋸木斷&#xff0c;水滴石穿。也許你現在做的事情很小&#xff0c;只要你能日積月累的堅持下去&#xff0c;才會發現意義非凡。所謂的成功&#xff0c;便是別人失敗的時候你還在…

微服務與Nacos概述-2

微服務間消息傳遞 微服務是一種軟件開發架構&#xff0c;它將一個大型應用程序拆分為一系列小型、獨立的服務。每個服務都可以獨立開發、部署和擴展&#xff0c;并通過輕量級的通信機制進行交互。 應用開發 common模塊中包含服務提供者和服務消費者共享的內容 provider模塊是…

10-1_Qt 5.9 C++開發指南_Data Visualization實現數據三維顯示

Data Visualization 是 Qt 提供的用于數據三維顯示的模塊。在 Qt 5.7 以前只有商業版才有此模塊&#xff0c;而從Qt5.7 開始此模塊在社區版本里也可以免費使用了。Data Visualization 用于數據的三維顯示&#xff0c;包括三維柱狀圖、三維空間散點、三維曲面等。Data Visualiza…

鑒源實驗室丨汽車網絡安全攻擊實例解析(二)

作者 | 田錚 上海控安可信軟件創新研究院項目經理 來源 | 鑒源實驗室 社群 | 添加微信號“TICPShanghai”加入“上海控安51fusa安全社區” 引言&#xff1a;汽車信息安全事件頻發使得汽車行業安全態勢愈發緊張。這些汽車網絡安全攻擊事件&#xff0c;輕則給企業產品發布及產品…

高效數據傳輸:輕松上手將Kafka實時數據接入CnosDB

本篇我們將主要介紹如何在 Ubuntu 22.04.2 LTS 環境下&#xff0c;實現一個KafkaTelegrafCnosDB 同步實時獲取流數據并存儲的方案。在本次操作中&#xff0c;CnosDB 版本是2.3.0&#xff0c;Kafka 版本是2.5.1&#xff0c;Telegraf 版本是1.27.1 隨著越來越多的應用程序架構轉…

無涯教程-Perl - redo函數

描述 此函數將重新啟動當前循環,而不會強制判斷控制語句。塊中不再執行任何語句。如果存在繼續塊,將不會執行。如果指定了LABEL,則在LABEL標識的循環開始時重新開始執行。 語法 以下是此函數的簡單語法- redo LABELredo返回值 此函數不返回任何值。 例 以下是顯示其基本…

用友時空KSOA SQL注入漏洞復現(HW0day)

0x01 產品簡介 用友時空KSOA是建立在SOA理念指導下研發的新一代產品&#xff0c;是根據流通企業最前沿的I需求推出的統一的IT基礎架構&#xff0c;它可以讓流通企業各個時期建立的IT系統之間彼此輕松對話&#xff0c;幫助流通企業保護原有的IT投資&#xff0c;簡化IT管理&#…

以商業大數據技術助力數據合規流通體系建立,合合信息參編《數據經紀從業人員評價規范》團標

經國務院批準&#xff0c;由北京市人民政府、國家發展和改革委員會、工業和信息化部、商務部、國家互聯網信息辦公室、中國科學技術協會共同主辦的2023 全球數字經濟大會于近期隆重召開。由數交數據經紀&#xff08;深圳&#xff09;有限公司為主要發起單位&#xff0c;合合信息…

深度剖析堆棧指針

為什么打印root的值與&root->value的值是一樣的呢 測試結果&#xff1a; *號一個變量到底取出來的是什么&#xff1f; 以前我寫過一句話&#xff0c;就是說&#xff0c;如果看到一個*變量&#xff0c;那就是直逼這個變量所保存的內存地址&#xff0c;然后取出里面保存的…

Skeleton-Aware Networks for Deep Motion Retargeting

Skeleton-Aware Networks for Deep Motion Retargeting解析 摘要1. 簡介2. Related Work2.1 運動重定向&#xff08;Motion Retargeting&#xff09;2.2 Neural Motion Processing 3. 概述&#xff08;Overview&#xff09;4. 骨骼感知深度運動處理4.1 運動表征4.2 骨架卷積4.3…

Spring Boot + Vue3前后端分離實戰wiki知識庫系統<十二>--用戶管理單點登錄開發一

目標&#xff1a; 在上一次Spring Boot Vue3前后端分離實戰wiki知識庫系統&#xff1c;十一&#xff1e;--文檔管理功能開發三我們已經完成了文檔管理的功能模塊開發&#xff0c;接下來則開啟新模塊的學習---用戶登錄&#xff0c;這塊還是有不少知識點值得學習的&#xff0c;…

指針與引用:C語言中的內存魔法

開始本篇文章之前先推薦一個好用的學習工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;學習事半功倍。歡迎訪問&#xff1a;http://airight.fun/。 也把我學習過程中搜集的資料分享給大家&#xff0c;希望可以幫助大家少走彎路&#xff0c;鏈接&#xff1a;h…

機器人CPP編程基礎-02變量Variables

機器人CPP編程基礎-01第一個程序Hello World 基礎代碼都可以借助人工智能工具進行學習。 C #include<iostream>using namespace std;main() {//Declaring an integer type variable A, allocates 4 bytes of memory.int A4;cout<<A <<endl;//Prints the a…