Linux 离线部署 https 访问的 harbor
部署环境 centerOS 7.6
docker版本 18.06.0-ce
docker-compose版本 1.28.4
harbor版本 v2.7.0 (离线版)
安装 docker ce
docker 下载地址:https://download.docker.com/linux/static/stable/x86_64/
这里选用的是 docker-18.06.0-ce.tgz
解压
tar -xvf docker-18.06.0-ce.tgz
将解压出来的docker文件内容移动到 /usr/bin/ 目录下
cp docker/* /usr/bin/
将docker注册为service
vim /etc/systemd/system/docker.service
将下列配置加到docker.service中并保存
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
启动
chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker
systemctl daemon-reload #重载unit配置文件
systemctl start docker #启动Docker
systemctl enable docker.service #设置开机自启
验证
systemctl status docker #查看Docker状态
docker -v #查看Docker版本
参考文档:https://www.cnblogs.com/wbqcheng/p/11972540.html
使用二进制安装 docker-compose
下载地址:https://github.com/docker/compose/releases
选择要安装的版本
在点击版本名称,选择对应环境的二进制包
点击下载到本地,上传到服务器上,然后修改名称为 docker-compose 移动到 /usr/local/bin 目录下
# docker-compose-linux-x86_64 下载到了/root 目录下了
mv /root/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
添加执行权限
chmod +x /usr/local/bin/docker-compose
创建软链
# 将docker-compose配置为全局可执行,即任何路径都可运行该命令
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功
docker-compose version
参考文档:https://blog.csdn.net/suyuaidan/article/details/133266139
安装openssl
主要用于生成https访问harbor的证书和秘钥,如只需要使用http访问harbor的施主可以不安装
有些服务器自带 openssl ,也可以不用安装
yum install -y openssl
证书秘钥配置
此部分用于设置 https 安全访问所需要的证书秘钥
harbor 仓库基础访问方式有两种,一种 http 一种 https
仅使用 http 访问 harbor 的施主可以跳过,本篇只介绍 https 访问 harbor
创建文件夹用于存放生成的证书秘钥文件
mkdir -p /harbor/certs/
在 /harbor/certs/ 目录下执行生成密钥命令
cd /harbor/certs/
openssl genrsa -out ca.key 4096
证书秘钥与IP绑定
生成证书秘钥并绑定ip以及配置地区和有效期
ip填写你自己的harbor安装位置服务器的ip,如有ip对应的域名也可填域名,本篇未设域名仅用ip配置
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=10.0.0.16" \
-key ca.key \
-out ca.crt
部署Harbor
安装包上传到服务器
下载安装包地址:https://github.com/goharbor/harbor/releases
在选取的版本中,找到要下载的离线包,下载到本地(注意:2.5.5版本会出现重启后数据库报错问题,需要删除database数据,2.7.0 以上没有这个问题了)
下载到 /harbor 路径下,并解压
cd /harbor
tar -zxvf harbor-offline-installer-v2.7.0.tgz
将 harbor 移动到 /opt 目录下
mv harbor /opt
harbor相关文件都在该文件夹中,共六个文件
harbor.yml 配置
配置harbor.yml文件中的参数,主要是端口号、IP地址、证书秘钥、数据存储位置的配置
文件夹中有harbor.yml.tmpl模板文件,将其复制为harbor.yml,后续我们使用的就是这个文件
# 备份
cp /opt/harbor/harbor.yml.tmpl /opt/harbor/harbor.yml
修改IP地址、http和https对应的端口号、证书位置路径、数据目录
# 修改参数
vim /opt/harbor/harbor.yml
修改如下:
hostname 域名修改为自己要安装harbor的服务器的ip
http 端口修改为8800
https 端口修改为8443
证书位置修改
certificate: 证书路径修改为/harbor/certs/ca.crt
private_key: 秘钥路径修改为/harbor/certs/ca.key
harbor_admin_password: 默认Harbor密码,不修改,就用默认的Harbor12345
data_value: 修改为/data/harbor,这里默认为/data,建议修改一下,我这里没改,是因为我忘了,当然后续也可以改了之后重启harbor
注:如果只用http访问的施主可将https对应部分注释掉,因为配置https后,即使你以http请求访问也会跳转到https
通过prepare文件来执行命令生成Harbor所需配置文件
进入/opt/harbor目录
cd /opt/harbor
执行prepare命令生成配置文件
./prepare
同样在/opt/harbor目录下执行安装命令
./install.sh
执行时会出现这种报错,在第5步的时候执行 docker-compose up -d 失败,我们手动执行下就可以了
如果没有报错,正常是出现最后一行成功安装的输出即表示安装成功,如下
我们用docker命令查看我们运行的harbor相关容器
docker ps
或者用 docker-compose -f /opt/harbor/docker-compose.yml ps 查看服务状态
前面配置安装完成后,可通过 https://xxx:8443 访问我们的Harbor镜像仓库
输入账号密码即可登录
默认账号为admin
默认密码为Harbor12345
新建一个项目
创建项目后,本地docker上传文件需要授权,如果是集群的话每个节点都要配置上
# 创建daemon.json 文件
vim /etc/docker/daemon.json
# 编辑如下内容
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["https://172.30.0.224:8443"]
}
编辑完成后,需要重启 docker
# 使配置生效
systemctl daemon-reload
# 重启docker
systemctl restart docker
注意,重启 docker 后harbor 进程都被停止了,需要重启 harbor ,但是重启后发现 harbor-db 一直 restarting ,经过度娘指点,原来是 /data/database 文件已有内容,需要清空 ( /data/database 文件夹一旦被清空,数据就没了,所以清空前要备份数据)
# 清空 /data/database 文件夹
rm -rf /data/database/*
# 执行 docker-compose down
docker-compose down
# 再在 /opt/harbor 文件夹下执行 docker-compose up -d
cd /opt/harbor
docker-compose up -d
服务器上登录 harbor
# 交互式登录
docker login 172.30.0.224:8443
下载及推送镜像到harbor 都能成功
参考文档:https://blog.csdn.net/mo_sss/article/details/135909921