| IP | hostname | OS | 用途 |
|---|---|---|---|
| 192.168.64.164 | harbor | centos7.6 | harbor仓库服务器 |
| 192.168.64.163 | - | centos7.6 | docker客户端 |
执行脚本部署Harbor仓库
#!bin/bash
#centos7安装harbor仓库
#version: v1
#2022-06-10
pwd=`pwd`
ip=`ip a |grep -A 2 "[[:digit:]]:[[:space:]]e" |sed -n 's/^.*inet //p'|awk -F '[ /]+' '{ print $1 }'`
hostname=harbor
domain=harbor.local
#修改hostname
hostnamectl set-hostname --static $hostname
echo "$ip $domain $hostname" >> /etc/hosts
#更换阿里云yum源
yum install -y wget curl
mv /etc/yum.repos.d /etc/yum.repos.bak
mkdir /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
#安装docker、doceker-compose
yum install -y docker-ce docker-compose
systemctl enable docker && systemctl start docker
#下载解压harbor
wget --no-check-certificate https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz
tar -zxf harbor-offline-installer-v2.5.1.tgz -C /opt
#创建CA证书目录
mkdir /opt/harbor/ca
cd /opt/harbor/ca
#生成秘钥和自签名证书
openssl req -newkey rsa:4096 -nodes -sha512 -keyout ca.key -x509 -days 3650 -subj "/CN=$domain" -out ca.crt
#生成证书签名请求
openssl req -newkey rsa:4096 -nodes -sha512 -keyout server.key -subj "/CN=$domain" -out server.csr
#生成服务器证书
openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
#查看证书到期时间
#openssl x509 -in server.crt -noout -text |head -n 15
#将CA文件复制到Docker证书目录中,需要先创建目录
mkdir -p /etc/docker/certs.d/$domain
cp ca.crt /etc/docker/certs.d/$domain/
#修改harbor.yml
cp /opt/harbor/harbor.yml.tmpl /opt/harbor/harbor.yml
sed -i "s/hostname: reg.mydomain.com/hostname: $domain/g" /opt/harbor/harbor.yml
sed -i "s#/your/certificate/path#/opt/harbor/ca/server.crt#" /opt/harbor/harbor.yml
sed -i "s#/your/private/key/path#/opt/harbor/ca/server.key#" /opt/harbor/harbor.yml
#修改etc/docker/daemon.json
cat << EOF >/etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
"insecure-registries": ["$domain"]
}
EOF
#重启docker服务
systemctl restart docker
#开始安装harbor
sh /opt/harbor/install.sh
#放行firewall端口
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload
firewall-cmd --zone=public --list-all
#下载公共镜像测试
docker pull alpine:latest
#上传镜像测试,默认用户密码在harbor.yml中
docker login -u admin -p Harbor12345 $domain
docker tag alpine:latest $domain/library/alpine:latest
docker push $domain/library/alpine:latest
#将harbor添加为服务并设置开机自启动
cat << EOF >/usr/lib/systemd/system/harbor.service
[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/bin/docker-compose -f /opt/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
systemctl enable harbor && systemctl start harbor
查看docker容器状态
docker ps
查看镜像
docker images
Harbor仓库镜像默认的存放目录
ls /data/registry/docker/registry/v2/repositories/library/web访问测试
https://192.168.64.164
访问80端口时会自动跳转至443端口
#安装docker
yum install -y wget curl
mv /etc/yum.repos.d /etc/yum.repos.bak
mkdir /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum install -y docker-ce
#修改etc/docker/daemon.json,添加harbor仓库地址
mkdir -p /etc/docker/
cat << EOF >/etc/docker/daemon.json
{
"insecure-registries": ["harbor.local"]
}
EOF
#开启docker服务
systemctl enable docker && systemctl start docker
#添加harbor服务器的hostname
echo "192.168.64.164 harbor.local" >> /etc/hosts
#登录harbor docker login -u admin -p Harbor12345 harbor.local #拉取镜像 docker pull harbor.local/library/alpine:latest #重新打标签 docker tag harbor.local/library/alpine:latest harbor.local/library/alpine:v1.0 docker images #上传镜像 docker push harbor.local/library/alpine:v1.0
web访问查看



