Harbor私库搭建和重启后部分服务不能自启动

# 安装 openssl
apt install apt-transport-https ca-certificates curl software-properties-common openssl -y

# 添加apt gpg阿里源公钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 添加apt docker阿里源
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable"
# 更新包列表
apt update
# 安装 docker-ce
apt install -y docker-ce
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://nol6uuul.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://dockerhub.azk8s.cn",
        "http://hub-mirror.c.163.com"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker version

curl -SL https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose --version
#Docker Compose version v2.24.1

#!/bin/bash

# ca
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=myharbor.com" \
 -key ca.key \
 -out ca.crt

# server sert
openssl genrsa -out myharbor.com.key 4096
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=myharbor.com" \
    -key myharbor.com.key \
    -out myharbor.com.csr
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=myharbor.com
DNS.2=myharbor
DNS.3=hostname
EOF
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in myharbor.com.csr \
    -out myharbor.com.crt

# 把服务器证书复制到 harbor 证书目录
mkdir -p /data/cert/
cp myharbor.com.crt /data/cert/
cp myharbor.com.key /data/cert/

# 将 crt 证书转换为 cert 供 docker 使用
openssl x509 -inform PEM -in myharbor.com.crt -out myharbor.com.cert
mkdir -p /etc/docker/certs.d/myharbor.com/
# 如果将默认的 nginx 端口 443 映射到其他端口,请创建 /etc/docker/certs.d/myharbor.com:port 或 /etc/docker/certs.d/harbor_IP:port 文件夹。
cp myharbor.com.cert /etc/docker/certs.d/myharbor.com/
cp myharbor.com.key /etc/docker/certs.d/myharbor.com/
cp ca.crt /etc/docker/certs.d/myharbor.com/
systemctl restart docker
sed 快捷替换 harbor 地址: sed -i 's/myharbor.com/yourdomain.com/g'
$ ./gen_certs.sh

wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz | tar zxvf harbor-online-installer-v2.10.0.tgz
cd harbor
# 修改配置文件
mv harbor.yml.tmpl harbor.yml

hostname: myharbor.com  # 修改为你的 harbor 地址

# http related config
http:
  port: 80

# https related config
https:
  port: 443
  # 修改为你的证书
  certificate: /etc/docker/certs.d/myharbor.com/myharbor.com.cert
  private_key: /etc/docker/certs.d/myharbor.com/myharbor.com.key

# harbor 登录密码
harbor_admin_password: 123

database:
  # 数据库密码
  password: root123
  ......

# 镜像的数据目录
data_volume: /data

cd harbor 
./install.sh
cd harbor 
./install.sh

# 修改主机 hosts 添加 网站
192.168.56.158 myharbor.com

# 向虚拟机添加域名解析
echo "192.168.56.158 myharbor.com" >> /etc/hosts

向虚拟机添加域名解析

echo "192.168.254.130 myharbor.com" >> /etc/hosts
Copy
docker login 登录 harbor

docker login myharbor.com
# username: admin
# password: 123
Copy
推送 busybox

docker pull busybox
# tag: 镜像仓库地址/项目名/镜像名:version
docker tag busybox myharbor.com/initproject/busybox:first
docker push myharbor.com/initproject/busybox:first

当然,如果不想那么麻烦配置https,把harbor.yml中https注释掉即可

首先,采用docker ps -a
发现部分harbor未正常启动
在github上找到了以下办法,尝试后确实可以解决问题

[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f $path/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f $path/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

docker-compose 的绝对路径可以通过

which docker-compose

一般在/usr/local/bin/docker-compose

此时通过docker-compose down关闭harbor

sudo systemctl enable harbor
sudo systemctl start harbor
systemctl daemon-reload
systemctl status harobr

扫描二维码,在手机上阅读!

发表评论

电子邮件地址不会被公开。 必填项已用*标注