虚拟机搭建docker私有镜像仓库harbor

发布时间:2024年01月05日

Docker的安装与简单管理-CSDN博客
前文提到docker image的来源可以是官网下载、公有仓库、私有仓库、自行打包等

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

环境

VMware Workstation 17 Pro

CentOS Linux release 7.9.2009 (Core)

4G,8Core,100G精简置备

NAT网络

docker节点:wsdocker 192.168.8.150/24

harbor节点:harbor?192.168.8.148/24

从template中链接克隆出来的

harbor版本:最新版本v2.10

自签发证书

#harbor节点内
hostnamectl set-hostname harbor && bash

#因为要用https访问harbor,所以需要使用自签发证书
1.生成CA证书
SSL工具生成2048位的密钥对,并将私钥保存到名为 "ca.key" 的文件中,3072位更加安全
openssl genrsa -out ca.key 2048
生成一个自签发的 X.509 格式的 CA(证书颁发机构)证书
#-x509: 生成一个自签发的 X.509 格式的证书,而不是生成证书签署请求
#-key ca.key: 指定用于生成证书的私钥文件路径和文件名为 "ca.key"。该私钥将与生成的证书绑定。
#-out ca.pem: 指定生成的证书文件的输出路径和文件名为 "ca.pem"
openssl req -new -x509 -days 365 -key ca.key -out ca.pem
#选择国家CN,城市BJ

2.生成域名的证书
SSL工具生成2048位的RSA私钥
openssl genrsa -out harbor.key 2048
SSL工具用创建的私钥生成一个证书签署请求,用以向CA申请签署证书
#-key harbor.key: 指定私钥文件的路径和文件名为 "harbor.key"。该私钥将与生成的证书绑定。
#-out harbor.csr: 指定生成的证书签署请求的输出路径和文件名为 "harbor.csr"
openssl req -new -key harbor.key -out harbor.csr
#选择国家CN,城市BJ,hostname harbor

3.签发证书
证书签署请求(CSR)与根证书进行签署,生成一个具有指定有效期的 X.509 格式的证书
#-in harbor.csr: 指定输入的证书签署请求文件路径和文件名为 "harbor.csr"
#-CA ca.pem: 指定用于签署证书的自签发 CA 证书文件路径和文件名为 "ca.pem"
#-CAkey ca.key: 指定用于签署证书的自签发 CA 私钥文件路径和文件名为 "ca.key"。该私钥与上述的 CA 证书配对。
#-CAcreateserial: 指定在签署证书时自动生成一个序列号文件。
#-out harbor.pem: 指定生成的证书文件的输出路径和文件名为 "harbor.pem"
#-days 365: 指定生成的证书的有效期为 365 天
openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 365
#Signature ok
#subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/CN=harbor
#Getting CA Private Key
#证书签发成功

安装harbor

#安全相关
yum -y install iptables-services
systemctl disable firewalld --now
systemctl disable iptables --now
iptables -F
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

#时钟同步,注释掉默认服务器,并使用cn.pool.ntp.org
sed -i 's/^server/#server/g' /etc/chrony.conf
sed -i '1s/^/server cn.pool.ntp.org iburst\\n/' /etc/chrony.conf
systemctl restart chronyd.service

#修改hosts文件,添加解析
echo "
192.168.8.150 wsdocker
192.168.8.148 harbor
" >> /etc/hosts

#软件包安装,多安装几遍
yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat ipvsadm conntrack
yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat ipvsadm conntrack
yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat ipvsadm conntrack

#安装docker-ce
curl -fsSL <https://get.docker.com> -o get-docker.sh
sh get-docker.sh
systemctl enable docker --now
docker --version
#Docker version 24.0.7, build afdd53b

#启用linux的ip转发功能,使其可以作为路由器或vpn服务器使用
#加载模块,br_netfilte用于支持网络桥接和网络过滤,暂时加载即可
modprobe br_netfilter
#修改/etc/sysctl.d/docker.conf文件
echo "
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
" > /etc/sysctl.d/docker.conf
#使内核配置文件生效
sysctl -p /etc/sysctl.d/docker.conf

#配置docker镜像加速,这是我的阿里云镜像加速器
echo '
{
  "registry-mirrors": ["<https://bsx9xf1d.mirror.aliyuncs.com>"]
}
' >> /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker

#安装docker-compose
cd ~
wget <https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64>
mkdir -p /usr/bin/docker-compose
mv docker-compose-linux-x86_64 /usr/bin/docker-compose/
chmod +x /usr/bin/docker-compose

#安装harbor
#在线安装直接wget github上的安装包 wget <https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz>
#离线安装需要从可以在github寻找对应版本的offline包,上传至虚机进行安装
#在线安装非常折磨,推荐离线安装
tar zxvf harbor-offline-installer-v2.10.0.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
#修改配置文件,改成和上面的证书一致的信息
#把证书相关放到/ssl
mkdir /ssl
cp harbor.* ca.* /ssl/
vim harbor.yml
sed -i 's/^hostname.*/hostname: harbor/' harbor.yml
sed -i 's/\\/your\\/certificate\\/path/\\/ssl\\/harbor.pem/' harbor.yml
sed -i 's/\\/your\\/private\\/key\\/path/\\/ssl\\/harbor.key/' harbor.yml
#安装
cd ~/harbor/
./install.sh
#成功提示如图
#修改宿主机hosts文件
C:\\Windows\\System32\\drivers\\etc\\hosts
在末尾添加并保存
192.168.8.148 harbor

宿主机访问https://harbor/
#默认账号密码admin/Harbor12345

离线安装包
安装成功提示

登录网页

测试使用harbor内的镜像

#先在harbor网页创建一个ws项目且公开
#wsdocker内
hostnamectl set-hostname wsdocker && bash
#修改docker镜像源
echo '
{
  "registry-mirrors": ["<https://bsx9xf1d.mirror.aliyuncs.com>"],
"insecure-registries": ["192.168.8.148","harbor"]
}
' > /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
#修改hosts文件,添加解析
echo "
192.168.8.150 wsdocker
192.168.8.148 harbor
" >> /etc/hosts

#登录harbor镜像仓库
docker login 192.168.8.148
#默认账号密码admin/Harbor12345

#上传本地镜像到harbo
#docker pull后通过docker save打包下来作为例子
docker pull centos
docker save -o centos.tar.gz centos
ls | grep centos.tar.gz
#centos.tar.gz
docker load -i centos.tar.gz
#上传
docker push 192.168.8.148/ws/centos:ws

#删除本地镜像并从harbor下载centos:ws
docker rmi -f 192.168.8.148/ws/centos:ws
#Untagged: 192.168.8.148/ws/centos:ws
#Untagged: 192.168.8.148/ws/centos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
docker pull 192.168.8.148/ws/centos:ws
#ws: Pulling from ws/centos
#Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
#Status: Downloaded newer image for 192.168.8.148/ws/centos:ws
docker images | grep 192
192.168.8.148/ws/centos   ws        5d0da3dc9764   2 years ago    231MB
Docker节点登录成功提示

?

文章来源:https://blog.csdn.net/qq_72569959/article/details/135405560
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。