欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker自建GitLab倉庫的實現(xiàn)

 更新時間:2024年07月10日 10:45:01   作者:小碼快撩  
Harbor是一個用于存儲和分發(fā)Docker鏡像的企業(yè)級Registry服務器,本文主要介紹了docker自建GitLab倉庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

Harbor是一個用于存儲和分發(fā)Docker鏡像的企業(yè)級Registry服務器,雖然Docker官方也提供了公共的鏡像倉庫,但是從安全和效率等方面考慮,
部署企業(yè)內部的私有環(huán)境Registry是非常必要的,Harbor和docker中央倉庫的關系,就類似于nexus和Maven中央倉庫的關系,Harbor除了存儲和分發(fā)鏡像外還具有用戶管理,項目管理,配置管理和日志查詢,高可用部署等主要功能。

準備內容

為了方便理解,使用的機器內網(wǎng)IP為1.1.1.1,外網(wǎng)IP為2.2.2.2

1. 獲取Harbor離線安裝包

通過github獲取離線安裝包,地址:https://github.com/goharbor/harbor/releases
可以根據(jù)自己的需要下載自己需要的release版本,這里使用的是v2.10.0,下載對應的離線安裝包harbor-offline-installer-v2.10.0.tgz

2. 下載docker-compose并安裝

參考網(wǎng)址:http://www.dbjr.com.cn/server/320623e4s.htm

部署docker環(huán)境,為了方便采用命令安裝 pip3的方式安裝docker-compose

安裝Harbor

本篇的安裝目錄在/data/harbor目錄下,docker卷映射宿主機位置在/data/volumes/下

解壓harbor離線文件

如果目錄不存在,則創(chuàng)建目錄  mkdir -p /data/harbor
cd /data/harbor   
# 上傳包

# 解壓
tar -zxvf harbor-offline-installer-v2.10.0.tgz

# 復制一份配置文件
cd harbor
cp harbor.yml.tmpl harbor.yml

# 編輯配置文件
vim harbor.yml

1. 部署http訪問模式

編輯配置文件的以下內容

# 修改成你的ip,填寫外網(wǎng)ip地址或者域名
# 填寫內網(wǎng)ip有個問題就是頁面能通過外網(wǎng)ip進入管理控制臺,但是無法通過外網(wǎng)ip使用docker login或者docker push等操作
hostname: 2.2.2.2

# 修改端口號,由于端口限制,不建議使用80端口
http:
  port: 7080

# 如果不需要https,請注釋掉https相關
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

# 配置密碼,將 Harbor12345換成你自己的密碼,建議使用復雜一點的密碼
harbor_admin_password: Harbor12345

# 數(shù)據(jù)映射到宿主機的位置
data_volume: /data/volumes/harbor/

log:
  local:
    # 日志存放到宿主機的位置
    location: /data/logs/harbor

啟動harbor

./install.sh

可以通過docker ps查看各個組件是否啟動完成,啟動完成后,就可以通過你配置的IP + PORT訪問Harbor了,這里有個小坑,因為harbor本身依賴redis和nginx,如果你本機已經(jīng)跑著名稱為nginx和redis的容器,啟動會報錯,需要先將自己的redis或者nginx容器重命名才能啟動成功。如果不需要開啟https的話,可以宣布游戲結束了。

Harbor常用命令

# 啟動harbor
docker-compose up -d

# 關閉harbor
docker-compose down

2. 部署支持https協(xié)議訪問

因為Harbor要配合天翼云或者K8S一起使用,集群訪問Harbor只支持https,所以要重新配置一下。

2.1 修改openss的配置(可先跳過)

這配置可以先跳過,遇到問題之后再回來配置。因為我這兒配置的是內網(wǎng)ip,但是v3.ext文件配置的外網(wǎng)ip,所以可以先跳過。

可能遇到問題點:制作證書前需要設置openss的配置文件,在[ v3_ca ] 下添加subjectAltName = IP:1.1.1.1,否則做出來的證書使用docker登錄會報:x509: cannot validate certificate for 1.1.1.1 because it doesn’t contain any IP SANs 錯誤。這里1.1.1.1需要替換成harbor所在機器的ip

vim /etc/pki/tls/openssl.cnf

在[ v3_ca ]下添加以下內容,ip替換成harbor機器所在ip

subjectAltName = IP:1.1.1.1

2.2 制作證書

生成CA證書私鑰和CA證書

# 切換到harbor證書所在的目錄,可以自己創(chuàng)建目錄,和后面配置對上就好
mkdir -p /data/harbor/cert
cd /data/harbor/cert

# 執(zhí)行證書命令
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 3650 -out ca.crt \
-subj "/C=CN/ST=Guangdong/L=Shenzhen/O=CMIT/OU=JSZX/CN=2.2.2.2/emailAddress=guyougao@****.com"

說明:C=CN(國家),ST=Guangdong(省份),L=Shenzhen(城市),O=NETSION(公司),OU=IT(部門),CN=2.2.2.2(IP,harbor的ip),emailAddress=XXX@XXX.com(換成你自己的郵箱,或者隨便填)
執(zhí)行完后,會得到兩個文件ca.crt和ca.key

生成服務器證書

# 私鑰
openssl genrsa -out 2.2.2.2.key 4096

openssl req -sha512 -new -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=CMIT/OU=JSZX/CN=2.2.2.2/emailAddress=guyougao@****.com" -key 2.2.2.2.key -out 2.2.2.2.csr

生成一個使用ip進行訪問的x509 v3擴展文件

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:2.2.2.2
EOF

使用剛才生成的v3.ext生成Harbor主機證書

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 2.2.2.2.csr \
    -out 2.2.2.2.crt

轉換2.2.2.2.crt為2.2.2.2.cert,供Docker使用,Docker守護程序將.crt文件解釋為CA證書,并將.cert文件解釋為客戶端證書

openssl x509 -inform PEM -in 2.2.2.2.crt -out 2.2.2.2.cert

到這里我們已經(jīng)生成了一堆證書了

[root@ecs-debug-service cert]# ls
2.2.2.2.cert  2.2.2.2.crt  2.2.2.2.csr  2.2.2.2.key  ca.crt  ca.key  ca.srl  v3.ext

2.3 使用證書

# 編輯配置文件
cd /data/harbor/harbor
vim harbor.yml

主要修改以下內容,端口默認443,certificate和private_key替換成你自己的證書路徑

# 修改成你的ip,填寫外網(wǎng)ip地址或者域名
# 填寫內網(wǎng)ip有個問題就是頁面能通過外網(wǎng)ip進入管理控制臺,但是無法通過外網(wǎng)ip使用docker login或者docker push等操作
hostname: 2.2.2.2

# 修改端口號,由于端口限制,不建議使用80端口
http:
  port: 7080

# 如果不需要https,請注釋掉https相關
https:
# 修改端口號,由于端口限制,不建議使用443端口
  port: 7443
  certificate: /data/harbor/cert/2.2.2.2.crt
  private_key: /data/harbor/cert/2.2.2.2.key

# 配置密碼,將 Harbor12345換成你自己的密碼,建議使用復雜一點的密碼
harbor_admin_password: Harbor12345

# 數(shù)據(jù)映射到宿主機的位置
data_volume: /data/volumes/harbor/

log:
  local:
    # 日志存放到宿主機的位置
    location: /data/logs/harbor

將服務器證書,密鑰和CA文件復制到Harbor主機上的Docker證書文件夾中

mkdir -p /etc/docker/certs.d/2.2.2.2:7443
cp 2.2.2.2.cert 2.2.2.2.key ca.crt /etc/docker/certs.d/2.2.2.2:7443

這里文件夾的命名是有規(guī)則限定的,/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port,yourdomain.com,harbor_IP根據(jù)自己的情況填寫harbor域名或者ip,因為我這里使用的時ip訪問,所以配置的是ip,port為你配置的https端口,如果是默認的443可以不填寫端口,如果你使用的是非默認值,文件夾名稱請加上端口號且需要和harbor.yml配置的https端口對應上

2.4 重啟docker與harbor

# 關閉harbor
docker-compose down -v

# 重啟docker
service docker restart

# 重新配置
./prepare

# 啟動
./install.sh

ps:我看到網(wǎng)上有些教程在執(zhí)行./prepare之后直接docker-compose -d就可以了。但是我發(fā)現(xiàn)我執(zhí)行的時候報錯了,docker ps -a發(fā)現(xiàn)之前相關的容器全部沒有了,所以就直接在./install了一次

2.5 驗證https

頁面訪問我們的http端口7080,發(fā)現(xiàn)已經(jīng)可以自動跳轉到https端口7443了

訪問地址:2.2.2.2:7443

使用admin,密碼使用之前在配置文件中配置的密碼,默認Harbor12345,登錄成功后便看到了harbor清爽的界面

本機docker推送鏡像到harbor中

# 隨后輸入密碼
docker login https://2.2.2.2:7443 -u admin

# 拉一個鏡像
docker pull mongo

# tag鏡像
docker tag mongo:latest 2.2.2.2:7443/library/mongo:latest

# 推送鏡像
docker psuh 2.2.2.2:7443/library/mongo:latest

問題點總結

通過測試發(fā)現(xiàn)有如下問題,暫時沒解決內網(wǎng)和外網(wǎng)無差別訪問的問題點。有經(jīng)驗的可以一起交流一下,解決當前存在的問題

1. docker login報錯

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://2.2.2.2:7443/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority

需要daemon.json文件配置

"insecure-registries":["2.2.2.2:7443"]

2. 內網(wǎng)ip推送鏡像

docker push 1.1.1.1:7443/ctos-dev/mongo

Using default tag: latest
The push refers to repository [1.1.1.1:7443/ctos-dev/mongo]
1434daed1bc0: Retrying in 1 second 
725f3f03e847: Retrying in 1 second 

會一直重試,無法push到harbor倉庫

3. 通過外ip,http協(xié)議端口推送

[root@ecs-debug-service harbor]# docker push 2.2.2.2:7080/ctos-dev/mongo:latest
The push refers to repository [2.2.2.2:7080/ctos-dev/mongo]
Get "https://2.2.2.2:7080/v2/": http: server gave HTTP response to HTTPS client

也是無法推送

4. 為了方便使用,所以hostname配置外網(wǎng)或者域名地址

到此這篇關于docker自建GitLab倉庫的實現(xiàn)的文章就介紹到這了,更多相關docker自建GitLab倉庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker Alpine鏡像時區(qū)問題完美解決方案

    Docker Alpine鏡像時區(qū)問題完美解決方案

    這篇文章主要介紹了Docker Alpine鏡像時區(qū)問題完美解決方案,本文給大家分享兩種解決方案供大家參考,需要的朋友可以參考下
    2021-04-04
  • 使用portainer連接遠程docker的教程

    使用portainer連接遠程docker的教程

    Portainer是一個輕量級的docker環(huán)境管理UI,可以用來管理docker宿主機和docker swarm集群,這篇文章主要介紹了使用portainer連接遠程docker的方法,需要的朋友可以參考下
    2020-03-03
  • docker沒有錯誤日志,鏡像服務卻啟動不成功的問題以及排查方式

    docker沒有錯誤日志,鏡像服務卻啟動不成功的問題以及排查方式

    這篇文章主要介紹了docker沒有錯誤日志,鏡像服務卻啟動不成功的問題以及排查方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker安裝pypiserver私服的方法步驟

    Docker安裝pypiserver私服的方法步驟

    本文主要介紹了Docker安裝pypiserver私服的方法步驟,通過Docker安裝,可以方便地創(chuàng)建私有包倉庫,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Linux 離線安裝docker的過程(一鍵式安裝)

    Linux 離線安裝docker的過程(一鍵式安裝)

    這篇文章主要介紹了Linux 離線安裝docker(一鍵式安裝)的方法,非常簡單,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Docker常見命令介紹

    Docker常見命令介紹

    這篇文章介紹了Docker中的常見命令,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • 詳解給Ocelot做一個Docker鏡像

    詳解給Ocelot做一個Docker鏡像

    這篇文章主要介紹了詳解給Ocelot做一個Docker鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 使用Docker Compose搭建 Confluence的教程

    使用Docker Compose搭建 Confluence的教程

    本文將介紹如何使用 Docker Compose 快速搭建 Confluence 、以及如何和 Traefik 一同使用,如果你看過之前的內容,跟隨本文應該能在十分鐘內解決戰(zhàn)斗,感興趣的朋友快來看看吧
    2021-06-06
  • docker start啟動容器后仍然exit狀態(tài)的解決

    docker start啟動容器后仍然exit狀態(tài)的解決

    這篇文章主要介紹了docker start啟動容器后仍然exit狀態(tài)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • docker部署應用的三種方式

    docker部署應用的三種方式

    越來越多的前端團隊選擇用Docker部署前端項目,本文主要介紹了docker部署應用的三種方式,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論