企业级镜像仓库Harbor

Harbor私有仓库安装

1.安装Docker和Docker Compose

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

1.1.卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

 yum remove docker \
                   docker-client \
                   docker-client-latest \
                   docker-common \
                   docker-latest \
                   docker-latest-logrotate \
                   docker-logrotate \
                   docker-selinux \
                   docker-engine-selinux \
                   docker-engine \
                   docker-ce

\ : 表示该行的命令没有结束,下面一行的内容是一体的。

1.2.安装docker

首先需要大家虚拟机联网,安装yum工具

 yum install -y yum-utils \
            device-mapper-persistent-data \
            lvm2 --skip-broken

然后更新本地镜像源:

 # 设置docker镜像源
 yum-config-manager \
     --add-repo \
     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     
 sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
 
 yum makecache fast

然后输入命令:

 yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

1.3.启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

 # 关闭
 systemctl stop firewalld
 # 禁止开机启动防火墙
 systemctl disable firewalld

通过命令启动docker:

 systemctl start docker  # 启动docker服务
 
 systemctl stop docker  # 停止docker服务
 
 systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

 docker -v

如图:

img

1.4.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户,您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://do1m38nl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.CentOS7安装DockerCompose

2.0.DockerCompose简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

2.1.下载

Linux下需要通过命令下载:

 # 安装
 curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

如果下载速度较慢,或者下载失败,可以先自行在网上下载好docker-compose文件,然后上传到/usr/local/bin/目录也可以。

docker-compose下载网址:Releases · docker/compose

2.2.修改docker-compose文件权限

修改文件权限:

 # 修改权限
 chmod +x /usr/local/bin/docker-compose
 # 查看版本号
 docker-compose -v
 
 Docker Compose version v2.17.2

3、安装Harbor私有仓库

3.1.下载并修改配置文件

Harbor安装包下载网址:Releases · goharbor/harbor (github.com)

tar zxvf harbor-offline-installer-v2.0.0.tgz 
cd harbor
cp harbor.yml.tmpl harbor.yml 
vi harbor.yml
# 修改主机名:hostname: reg.ctnrs.com 
# 先注释https相关配置
    https:
      # https port for harbor, default is 443
      port: 443
      # The path of cert and key files for nginx
      certificate: /your/certificate/path
      private_key: /your/private/key/path

3.2.安装

./prepare 
./install.sh 

# 查看容器是否全部启动
docker-compose ps

浏览器登录IP地址或域名进行访问
账号:admin	默认密码:Harbor12345

3.3.docker连接私有仓库

docker login 私有仓库域名/IP地址

Error response from daemon: Get "https://192.168.200.101/v2/": dial tcp 192.168.200.101:443: connect: connection refused

	发现出错,因为docker默认是使用https协议
	所以我们需要将docker对私有仓库的ip、域名变得可信任:
 vi /etc/docker/daemon.json
 
  #逗号一定不能少,JSON格式
 "registry-mirrors": ["http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"], 
"insecure-registries": ["192.168.200.101"]

 systemctl daemon-reload
 systemctl restart docker
 
 docker info 	# 增加了一行参数
  Insecure Registries:
  192.168.200.101
  127.0.0.0/8	
  
  docker login 私有仓库域名/IP地址

3.4.本地镜像推送到仓库

修改镜像 tag:

docker tag 本地镜像名 私有仓库IP地址、域名/library/nginx:1.19

推送镜像到 Harbor:

> docker push 11.8.36.21:8888/library/nginx:1.19
The push refers to a repository [11.8.36.21:8888/library/nginx]
f0f30197ccf9: Pushed 
eeb14ff930d4: Pushed 
c9732df61184: Pushed 
4b8db2d7f35a: Pushed 
431f409d4c5a: Pushed 
02c055ef67f5: Pushed 
1.19: digest: sha256:eba373a0620f68ffdc3f217041ad25ef084475b8feb35b992574cd83698e9e3c size: 15

4、Harbor 部署HTTPS

4.1.生成SSL证书

下载生成证书工具:

# 注意: 也可以使用openssl工具

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl*
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

cat > ca-config.json <<EOF		# 创建两个ca证书颁发机构,json文件
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "kubernetes": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF

cat > ca-csr.json <<EOF
{
    "CN": "kubernetes",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

# 初始化ca,执行ca-csr.json文件,生成ca机构
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

cat > reg.ctnrs.com-csr.json <<EOF	# 创建服务端证书的请求文件
{
  "CN": "reg.ctnrs.com",	# 域名
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "BeiJing",
      "ST": "BeiJing"
    }
  ]
}
EOF

# 命令最后的参数是与Harbor指定的域名一致
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes reg.ctnrs.com-csr.json | cfssljson -bare reg.ctnrs.com

**4.2.Harbor启用HTTPS **

# vi harbor.yml
https: 
	port: 443 
	certificate: /root/harbor/ssl/reg.ctnrs.com.pem 		private_key: /root/harbor/ssl/reg.ctnrs.com-key.pem 
3、重新配置并部署Harbor
./prepare 
docker-compose down 
docker-compose up –d 
4、将数字证书复制到Docker主机 
mkdir /etc/docker/certs.d/reg.ctnrs.com 
cp reg.ctnrs.com.pem /etc/docker/certs.d/reg.ctnrs.com/reg.ctnrs.com.crt 

5、Harbor主从复制


在主节点中创建连接备份节点:

6、Harbor运维

容器 功能
harbor-core 配置管理中心
harbor-db PG数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-portal Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registryctl 镜像存储

容器数据持久化目录:/data
日志文件目录:/var/log/harbor

仓库高可用:① 主从备份 ② 备份数据库 /data

posted @   三不知0  阅读(53)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示