主机清单:
192.168.17.10 docker harbor keepalived
192.168.17.20 docker harbor keepalived
安装docker
切换阿里源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下载存储驱动程序:yum install -y yum-utils device-mapper-persistent-data lvm2
安装依赖:yum -y install docker-ce docker-ce-cli containerd.io
安装docker:yum -y install docker-ce-19.03.10 docker-ce-cli-19.03.10 containerd.io
配置阿里云镜像加速器
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1dmptu91.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
部署harbor
从github上下载docker-compse工具
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
赋执行权
chmod +x /usr/local/bin/docker-compose
下载harbor压缩包
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz
将harbor包解压到/usr/local/下
tar -zxf harbor-offline-installer-v1.7.4.tgz -C /usr/local/
#进入harbor目录
cd /usr/local/harbor/
修改harbor配置文件
vim harbor.cfg
修改hostname = 192.168.17.10 ip为本机ip,两台都需要修改
执行安装脚本
./install.sh
启动
docker-compose start
通过浏览器访问
用户:admin
密码:Harbor12345
主的可视化界面配置主自动复制镜像到从库
项目-->>新建项目 自己定义项目名称 访问级别 公开
仓库管理-->>新建目标
目标名为项目名称 目标URL为从库的地址,用户名,密码为从库用户名密码
注意:不要勾选验证远程证书 测试连接成功 确定
复制管理-->>新建规则
名称自定义,描述自定义项目源为自己所创项目
目标为从库的地址,这个会在仓库管理配置完成后自动生成,选择即可
触发模式:即可 勾选删除本地镜像同时删除远程镜像
配置完成后再主上传镜像
先修改docker镜像仓库地址,两台都需要修改,各自改为自己ip
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.17.10
重载配置,重启docker
systemctl daemon-reload
systemctl restart docker
登录harbor
docker login -u admin -p Harbor12345 192.168.17.10
上传私有镜像
镜像名称要修改成:私有仓库ip/项目名称/镜像名称`
docker tag nginx:latest 192.168.17.10/harbor/nginx
docker push 192.168.17.10/harbor/nginx 上传完成后去从库看是否复制成功
harbor高可用
安装keepalived,两台都需要安装修改配置
yum -y install keepalived
修改配置
vim /etc/keepalived/keepalived.conf
修改为:
global_defs {
router_id lb2
#路由id号,和主服务器必须不同(删除vrrp_strict行)
}
vrrp_instance VI_1 {
state BACKUP
#状态:BACKUP备 MASTER主
interface ens33
virtual_router_id 51
priority 99
#优先级:备比主要小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.254
#虚拟路由ip,公共ip
}
}
启动服务
Systemctl start keepalived
查看是否生成虚拟ip
ip a show dev ens33
如果同时两台都生成虚拟ip,可能是docker卡死造成的,重启docker即可
修改docker镜像地址,两台都是自己的虚拟ip地址
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.17.254
重载配置,重启docker
systemctl daemon-reload
systemctl restart docker
启动harbor,需要进入/usr/local/harbor/ 才能启动
docker-compose start
验证:
关闭主的harbor和keepalived
docker-compose stop
systemctl stop keepalived
在主下载镜像
docker rmi 192.168.17.10/harbor/nginx 删除之前创建的私有镜像
docker pull 192.168.17.254/harbor/nginx 下载自己的私有仓库镜像
下载成功即实现高可用效果