ubuntu搭建docker harbor實錄

弗拉宾教头發表於2024-07-13

一、搭建前提

一臺2C2G ubuntu 18.04.6版本主機

配置好網路、ntp,關閉ufw

二、搭建步驟

1、安裝docker engine、docker-compose等

設定 Docker 的儲存庫

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安裝docker包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

(可選)驗證docker安裝完成

docker run hello-world
#刪除docker命令
#docker rm [container name]
#docker image rm [image name]

下載harbor安裝包

下載並解壓安裝包
到Harbor releases 頁面.

Releases · goharbor/harbor (github.com)

下載線上或離線安裝包(本次選擇離線安裝包)

解壓壓縮包:

cd && mkdir harbor-install && cd harbor-install
#採用任何手段上傳harbor-offline-installer-v2.10.3.tgz包到目錄下,例如:
rz harbor-offline-installer-v2.10.3.tgz
#解壓
tar -xzvf harbor-offline-installer-v2.10.3.tgz

配置Harbor https准入

生成證書頒發機構證書

生成 CA 證書私鑰:

openssl genrsa -out ca.key 4096

生成 CA 證書:

#生成一個新的隨機數檔案
openssl rand -out /root/.rnd 2048 chmod 600 /root/.rnd
#生成 CA 證書 openssl req
-x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Shanghai/L=Shanghai/O=lsx/OU=lsx/CN=lsx's Root CA" \ -key ca.key \ -out ca.crt

生成伺服器證書

生成私鑰:

openssl genrsa -out lsx.com.key 4096

生成證書籤名請求 (CSR):

#根據你的組織情況調整 -subj 選項中的數值。如果你使用完全限定域名(FQDN)連線你的 Harbor 主機,你必須將其指定為通用名稱(CN)屬性,並在金鑰和證書籤名請求(CSR)檔名中使用它。
openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Shanghai/O=lsx/OU=lsx/CN=lsx.com"-key lsx.com.key -out lsx.com.csr

生成x509 v3 擴充套件檔案:

#無論是使用 FQDN 還是 IP 地址連線到 Harbor 主機,都必須建立此檔案,以便為 Harbor 主機生成符合使用者備用名稱 (SAN) 和 x509 v3 擴充套件要求的證書。替換條目以反映您的域。
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=lsx.com
DNS.2=lsx
DNS.3=k8s-harbor
EOF

使用該檔案為您的 Harbor 主機生成證書:

#將 CSR 和 CRT 檔名替換為 Harbor 主機名。
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in lsx.com.csr \
-out lsx.com.crt

向 Harbor 和 Docker 提供證書

將伺服器證書和金鑰複製到 Harbor 主機上的 certficates 資料夾中:

mkdir -p /data/cert/
cp
lsx.com.crt /data/cert/ cp lsx.com.key /data/cert/

轉換 lsx.com.crt 為lsx.com.cert, 提供docker使用:

#Docker守護程式將.crt檔案解釋為CA(證書頒發機構)證書,將.cert檔案解釋為客戶端證書:
openssl x509 -inform PEM -in lsx.com.crt -out lsx.com.cert

要將伺服器證書、金鑰和 CA 檔案複製到 Harbor 主機上的 Docker 證書資料夾中,(確保適當的資料夾已經存在)

cp lsx.com.cert /etc/docker/certs.d/lsx.com/
cp lsx.com.key /etc/docker/certs.d/lsx.com/
cp ca.crt /etc/docker/certs.d/lsx.com/
#如果你將預設的 Nginx 埠 443 對映到不同的埠,你需要建立相應的目錄 /etc/docker/certs.d/yourdomain.com:port 或者 /etc/docker/certs.d/harbor_IP:port

重啟docker

systemctl restart docker

配置 Harbor YML 檔案

cd /root/harbor-install/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
#修改hostname、證書地址

安裝harbor

./install

至此搭建完成。

harbor官網:

Harbor (goharbor.io)

相關文章