文章目录
官方文档:https://goharbor.io/docs/2.0.0/install-config/
前言
轻量级虚拟化的容器技术具有举足轻重的推动作用。其实很早之前,容器技术已经有所应用,而 Docker 的出现和兴起彻底带火了容器。其关键因素是 Docker 提供了使用容器的完整工具链,使得容器的上手和使用变得非常简单。工具链中的一个关键,就是定义了新的软件打包格式-容器镜像。镜像包含了软件运行所需要的包含基础 OS 在内的所有依赖,推送至运行时可直接启动。从镜像构建环境到运行环境,镜像的快速分发成为硬需求。同时,大量构建以及依赖的镜像的出现,也给镜像的维护管理带来挑战。镜像仓库的出现成为必然。
自己在本地搭建一套镜像仓库:Harbor。上传和下载镜像。
1、确保目标主机满足Harbor安装前提条件
Docker文档:https://docs.docker.com/engine/install/centos/
安装Docker
#安装docker-ce 社区版
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#启动docker服务
systemctl start docker
#查看docker版本
docker -v
安装Docker compose
#安装docker-compose
yum -y install docker-compose
#我的是centos8使用上面命令报错,采用的下方的
#pip3 install docker-compose
问题收集
2、下载harbor上传主机
官网 | 地址 |
---|---|
harbor | https://github.com/goharbor/harbor/releases |
可以下载其离线版本
#创建解压目录harbor
mkdir harbor
#进入解压目录harbor
cd harbor
#解压压缩包到当前目录下的harbor目录中
tar -zxvf harbor-offline-installer-v2.5.1.tgz
3、配置HTTPS证书
#生成CA证书私钥
openssl genrsa -out ca.key 4096
#生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=域名地址" \
-key ca.key \
-out ca.crt
#将服务器证书和密匙复制到Harbor主机上的证书文件夹中
cp ca.crt /data/cert
cp ca.key /data/cert
#重启docker
systemctl restart docker
#运行prepare脚本启用HTTPS服务
./prepare
4、配置Harbor YML文件
#进入解压完的harbor文件夹种
cd harbor
#将harbor.yml.tmpl重名名为harbor.yml
mv harbor.yml.tmpl harbor.yml
配置文件harbor.yml
6、运行安装程序脚本
#到harbor解压目录下执行
./install.sh
7、测试命令登陆仓库
docker login 仓库地址
出现报错
Error response from daemon: Get "https://仓库地址/v2/": x509: certificate relies on legacy Common Name field, use SANs instead
解决
安装docker后不一定有/etc/docker/daemon.json文件,手动创建一个进行编辑
{"insecure-registries": [
"地址"
]}
保存退出后重启docker和执行./install.sh
8、设置harbor服务自启动
当部署Harbor的服务器在重启之后,可能会出现Harbor无法跟随系统自启动
解决方案
现假设Harbor的安装目录位置为/usr/local/harbor,在Harbor安装完成之后,在此目录下会生成docker-compose.yml配置文件,可以使用docker-compose操作此文件来控制Harbor的启停。
接下来编写自启Harbor的systemd服务,命名为harbor.service(放置于/etc/systemd/system目录下):
[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 {{ harbor_install_path }}/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
其中 ExecStart 字段中的/usr/local/bin/docker-compose 为自己本机的docker-compose所在目录,可使用 which docker-compose 命令查找,{{ harbor_install_path }}为harbor的安装目录,我安装在home下,该字段如下所示:
/home/yang/harbor/harbor/docker-compose.yml
最后使用chmod -R 777 harbor.service 设置访问权限,使用systemctl enable harbor.service来设置开机自启动即可。然后重启服务器进行测试。