-------------------------------------安装前介绍-----------------------------------------------------
harbor是一个docker私有镜像仓库,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目。
docker官方提供了一个私有镜像仓库 docker Registry,安装部署容易,安装一个Registry容器就可以使用了。
但是Registry有以下缺点:
1、没有图形界面
2、 没有项目管理
3、没有用户权限控制
4、 看不到镜像操作记录
Harbor的优势:
1、图形管理界面。
2、按项目管理镜像。
3、独立的用户管理,不同用户可以操作不同镜像,细粒度的权限控制,包含create、push 、pull、delete。
4、镜像管理。
5、标签管理。
6、操作日志管理。
-------------------------------------安装前准备-----------------------------------------------------
步骤一:安装docker
一、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
二、设置yum源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
三、查看仓库中所有的docker版本
yum list docker-ce --showduplicates | sort -r
四、安装docker,yum install docker-ce-版本号
yum install docker-ce-18.06.2.ce
五、启动docker和设置开机自动启动
systemctl enable docker
systemctl start docker
步骤二:安装docker-compose
<方式一>CentOS:
yum install epel-release -y
yum install python-pip -y
Ubuntu:
apt-get install python-pip -y
# 通用命令
pip --version
pip install --upgrade pip
pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose
docker-compose version
<方式二>
1、安装pip
yum -y install epel-release
yum -y install python-pip
2、查看和更新
pip --version
pip install --upgrade pip
3、安装和查看版本
pip install docker-compose
docker-compose version
<方式三>
1、yum update curl
2、下载和安装
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3、查看版本
docker-compose version
步骤三:下载harbor在线或离线安装包
1、harbor的仓库页面进行下载版本
https://github.com/goharbor/harbor/releases
harbor-online-installer-v1.8.0.tgz
2、下载后上传到服务器
cd /home/
tar -zvxf harbor-online-installer-v1.8.0.tgz
解压后会自动生成harbor文件
-------------------------------------安装开始------------------------------------------------------
步骤一:创建https证书
步骤说明:此处一定注意,证书创建错误后面产生各种问题,解决方法也很乱。
1、创建证书目录
mkdir -p /home/cert/httpsHarbor
cd /home/cert/httpsHarbor
2、生成证书
<1>openssl genrsa -out ca.key 2048
<2>openssl req -x509 -new -nodes -key ca.key -subj "/CN=harbor.nj.com" -days 5000 -out ca.crt
此处注意:harbor.nj.com为域名地址,没有则设置成主机别名也可以(需配置别名),或直接ip地址
<3>openssl genrsa -out server.key 2048
<4>openssl req -new -key server.key -subj "/CN=harbor.nj.com" -out server.csr
<5>openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000
3、安装完成后可查看目录结构
补充步骤一:
1、创建别名(没有可忽略)
vim /etc/hosts中添加 192.168.42.13 harbor.nj.com
解释:ip为主机ip,域名为解析的域名,对应CA证书域名或别名
2、进入文件并编辑
cd /etc/pki/tls/
vim openssl.cnf
说明:在大概244行左右,即[ v3_ca ]下面一行 subjectAltName = IP:192.168.42.13 其中ip为当前主机。
步骤二:编辑启动信息
1、vim harbor.yml并编辑
# 将hostname改成本机IP或域名,不要用localhost,127.0.0.1或0.0.0.0,冒号后面都有一个空格
hostname: 192.168.42.13
ui_url_protocol: https
# 将http端口改成8081,因为默认用的80端口已经被占用,http可以指定任意端口
http:
port: 8081
# 配置https的端口,只能使用443端口,更改证书路径,证书路径为刚刚生成的https证书的实际路径
https:
port: 443
certificate: /home/cert/httpsHarbor/ca.crt
private_key: /home/cert/httpsHarbor/ca.key
# 修改后台管理密码
harbor_admin_password: harbor12345
# harbor的内部数据库密码
database:
password: root123
# 修改harbor数据存储路径与日志存储路径,目录要先创建好并赋予777权限
data_volume: /data/harbor-data
# 修改日志存放路径,默认路径为/var/log/harbor
log:
local:
localtion: /data/harbor-log
最后保存退出
步骤三:启动
# 进入harbor安装目录
cd /home/harbor
# 启动
./install.sh
步骤四:浏览器使用
直接访问域名加上自己配置的端口方法
用户名为admin,密码为配置文件中定义的
至此安装成功
-------------------------------------docker信任配置---------------------------------------------------
步骤一:配置仓库为docker受信任的仓库
# 编辑
vim /etc/docker/daemon.json
# 追加内容
{
"insecure-registries": ["192.168.42.13:8081"]
}
具体根据情况,如下我的配置:
步骤二:拷贝https证书文件harbor.crt到 /etc/docker/certs.d/serverIp 文件夹。每个docker都要拷贝证书文(此步骤可以先忽略,后面镜像推送出问题在执行此步骤)
mkdir –p /etc/docker/certs.d/192.168.42.13
cp /home/cert/httpsHarbor/ca.crt /etc/docker/certs.d/192.168.42.13/ca.crt
步骤三:重启docker(注意不重启后面docker login会访问不了harbor)
systemctl daemon-reload
systemctl restart docker.service
步骤四:重启harbor
cd /home/harbor
./prepare
docker-compose down
docker-compose up -d
---------------------------------测试将本地业务镜像push到harbor(后面再介绍SpringBoot对接harbor)---------------------------------------
步骤一:登录harbor
docker login xxx.xx.xx.xx
输入账户密码
登陆成功后,token会存放在 ~/.docker/config.json.文件里
步骤二:给本地镜像打上tag标记,打标记的时候要加上项目名称。
# docker tag 本地镜像名:版本号 ip:port/项目名称/远程镜像名:版本号,如果不加版本号表示最新版本
docker tag demo1:v1.0.1 xx.xx.xx.xx:8081/test/demo1:v1.0.1
# 上传镜像到harbor
docker push xx.xx.xx.xx:8081/test/demo1:v1.0.1
-------------------------------------harbor仓库的常用操作记录-----------------------------------------
1、从harbor上拉取镜像
docker pull xx.xx.xx.xx:8081/test/demo1:v1.0.1
2、重启harbor
cd /home/harbor
docker-compose down
./prepare #配置文件有改动时需要执行
docker-compose up -d
3、关闭harbor
cd /usr/local/harbor
docker-compose down -v
# 或者
docker-compose stop
4、卸载harbor
cd /home/harbor
docker-compose stop
rm -rf /home/harbor
5、最常用操作
停止服务: docker-compose stop
开始服务: docker-compose start
再次启动harbor: docker-compose up -d
停止和关闭harbor命令:docker-compose down -v
docker-compose ps
-------------------------------------高可用配置介绍和安装--------------------------------------------------------
-------------------------------------遇到问题汇总记录--------------------------------------------------------------
1、如果不在harbor中新建项目,或者创建tag的时候不加项目名称,在上传镜像时会发生错误,所以docker tag 打标签的时候要一定要加上项目名称。
2、#"注意docker-compose"命令只能在当前harbor目录下使用(因为该目录下有harbor配置文件)
3、配置生效的方式。编辑保存配置后。在harbor安装目录下执行./prepare即可
4、push镜像时候报错解决
Get https://106.15.94.115/v2/: x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs
说明:此错误目前看是证书导致的错误,创建证书时候没有引入ip或域名或别名导致的错误,具体根据自己当时情况重新创建证书,配置相关参数即可,具体可参考上文的安装证书步骤和配置harbor.yml文件
5、push过程中被deny拒绝。
说明:本地docker login xxx.xx.xx.xx后再重新push,特别是重启harbor后在本地测试这部必须的,当然你可以再springBoot中配置一键打包镜像后push,其实道理一样。docker login就是把登录成功后的token保存在本地,这样就不会被deny了
-----------------------------------最后附上成功推送后的截图--------------------------------------------------------------
下一篇:Maven项目直接对接harbor镜像仓库
整合篇:maven+git(master)+jenkins+harbor安装和对接整理