安装harbor服务器:
安装harbor
root@harbor-vm1:/usr/local/src# ls
harbor-offline-installer-v1.7.5.tgz
root@harbor-vm1:/usr/local/src# tar -xvf harbor-offline-installer-v1.7.5.tgz  -C /usr/local/src/
root@harbor-vm1:/usr/local/src# cd harbor/
root@harbor-vm1:/usr/local/src/harbor# mkdir certs
root@harbor-vm1:/usr/local/src/harbor# vim harbor.cfg
hostname = harbor1.dexter.com
ui_url_protocol = https
ssl_cert = /usr/local/src/harbor/cert/server.crt
ssl_cert_key = /usr/local/src/harbor/cert/server.key
harbor_admin_password = 123456
 
生成证书
root@harbor-vm1:~# mkdir  /usr/local/src/harbor/cert
root@harbor-vm1:~# cd  /usr/local/src/harbor/cert
root@harbor-vm1:/usr/local/src/harbor/cert# openssl genrsa -out server.key 2048  #生成私有key
root@harbor-vm1:/usr/local/src/harbor/cert# openssl req -x509 -new -nodes -key  server.key  -subj "/CN=harbor1.dexter.com" -days 7120 -out server.crt   #创建有效期时间的自签名证书
root@harbor-vm2:/usr/local/src/harbor/cert# openssl req -x509 -new -nodes -key server.key -subj "/CN=harbor2.dexter.com" -days 7120 -out server.crt   #创建有效期时间的自签名证书
注:如果无法在ubuntu系统上生成server.crt,可以尝试在centos上生成后在复制到ubuntu上。
 
安装docker
使用官方安装脚本自动安装 (仅适用于公网环境)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
 
安装docker ce
ubuntu
apt-get install docker-compose -y
 
centos
yum install -y docker-ce
yum install -y python-pip
yum install -y docker-compose
 
#配置Harbor
# ./prepare  
在当前目录下启动harbor实例
# ./install.sh
 
配置客户端使用harbor:
mkdir /etc/docker/certs.d/harbor1.dexter.com -pv
注:客户端主要指master和node
 
[root@k8s-harbor1 harbor]# scp cert/server.crt  172.16.99.121:/etc/docker/certs.d/harbor1.dexter.com/
 
#测试登录
[root@k8s-m1 ~]# docker login harbor1.dexter.com
Username: admin
Password:
Login Succeeded
 
 
修改本机C:\Windows\System32\drivers\etc\hosts文件,添加如下两行
172.16.99.127  harbor1.dexter.com
 
尝试使用浏览器打开harbor,账号:admin,密码:123456。
顺便新建一个基础镜像库
 
测试push镜像到harbor:
root@k8s-m1:~# docker pull alpine
root@k8s-m1:~# docker tag alpine:latest harbor1.dexter.com/baseimages/alpine:latest
 
测试pull镜像
前提是客户端有证书
root@k8s-n1:~# docker pull harbor1.dexter.com/baseimages/alpine:latest
latest: Pulling from baseimages/alpine
c9b1b535fdd9: Pull complete
Digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45
Status: Downloaded newer image for harbor1.dexter.com/baseimages/alpine:latest
harbor1.dexter.com/baseimages/alpine:latest
 
设置开机启动仓库
echo 'cd /usr/local/src/harbor && ./install.sh' >>/etc/rc.local
chmod +x /etc/rc.local
 
注:如果只使用http,就简单的多了,不需要证书了。
 
扩展1:使用http配置harbor
修改harbor.cfg文件
hostname = 172.16.99.127
ui_url_protocol = http
harbor_admin_password = 123456
 
启动harbor后,可以使用IP访问
 
 
客户端需要修改服务配置文件/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.16.99.127
# systemctl daemon-reload
# systemctl restart docker
 
# ps -ef | grep dockerd
root      3385     1  0 13:15 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.16.99.127
 
# docker login 172.16.99.127
 
扩展2:使用单独的磁盘(/dev/vdb)存储镜像
 
好像在centos7.6上默认创建的就是ftype=1
# mkfs.xfs -n ftype=1 /dev/vdb  
 
挂载磁盘
# mount /dev/vdb /var/lib/docker/
 
开机挂载
# blkid  /dev/vdb
/dev/vdb: UUID="36d3a4e3-8ff7-4eb3-b75f-6a30c0eaf802" TYPE="xfs"
# echo 'UUID=36d3a4e3-8ff7-4eb3-b75f-6a30c0eaf802 /var/lib/docker/ xfs defaults 0 0' >>/etc/fstab
 
 
挂载完磁盘后再次安装docker
# yum install -y docker-ce
 
扩展3:harbor镜像仓库高可用
重新部署了2台harbor镜像仓库
172.16.99.152
172.16.99.153
 
VIP
172.16.99.148
 
harbor.cfg配置如下
# grep -v '^#\|^$' /usr/local/src/harbor/harbor.cfg
hostname = 172.16.99.152
ui_url_protocol = http
harbor_admin_password = 123456
 
# grep -v '^#\|^$' /usr/local/src/harbor/harbor.cfg
hostname = 172.16.99.153
ui_url_protocol = http
harbor_admin_password = 123456
 
 
 
 
172.16.99.153
 
 
客户端
# cat /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.16.99.152 --insecure-registry 172.16.99.153 --insecure-registry 172.16.99.148
 
# docker login 172.16.99.153
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
 
Login Succeeded
# docker tag nginx:v2 172.16.99.153/baseimages/nginx:v2
# docker push 172.16.99.153/baseimages/nginx:v2
 
 
配置高可用
172.16.99.153
 
 
172.16.99.152
 
查看结果
172.16.99.152拿到了172.16.99.153上的镜像
 
 
 
keepalived+harpoxy(VIP)
 
# cat /etc/keepalived/keepalived.conf
global_defs {
    router_id lb-master-172.16.99.126
}
 
vrrp_script check-haproxy {
    script "killall -0 haproxy"
    interval 5
    weight -60
}
 
vrrp_instance VI-kube-master {
    state MASTER
    priority 120
    unicast_src_ip 172.16.99.126
    unicast_peer {
        172.16.99.125
    }
    dont_track_primary
    interface eth0
    virtual_router_id 111
    advert_int 3
    track_script {
        check-haproxy
    }
    virtual_ipaddress {
        172.16.99.148
    }
}
# cat /etc/keepalived/keepalived.conf
global_defs {
    router_id lb-backup-172.16.99.125
}
 
vrrp_script check-haproxy {
    script "killall -0 haproxy"
    interval 5
    weight -60
}
 
vrrp_instance VI-kube-master {
    state BACKUP
    priority 63
    unicast_src_ip 172.16.99.125
    unicast_peer {
        172.16.99.126
    }
    dont_track_primary
    interface eth0
    virtual_router_id 111
    advert_int 3
    track_script {
        check-haproxy
    }
    virtual_ipaddress {
        172.16.99.148
    }
}
 
# cat /etc/haproxy/haproxy.cfg
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon
        nbproc 1
 
defaults
        log     global
        timeout connect 5000
        timeout client  10m
        timeout server  10m
 
listen web
        bind 0.0.0.0:80
        mode tcp
        option tcplog
        balance roundrobin
        server 172.16.99.152 172.16.99.152:80  check inter 2000 fall 2 rise 2 weight 1
        server 172.16.99.153 172.16.99.153:80  check inter 2000 fall 2 rise 2 weight 1
 
客户端直接从VIP地址访问和拉取镜像
root@host-172-16-99-151:~# docker login 172.16.99.148
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
 
Login Succeeded
root@host-172-16-99-151:~# docker pull 172.16.99.148/baseimages/nginx:v2
 
在客户端上传镜像并查看结果
# docker tag mysql:5.6 172.16.99.148/baseimages/mysql:5.6
# docker push 172.16.99.148/baseimages/mysql:5.6
 
我们在harbor的web段发现2台harbor机器都有了mysql:5.6这个镜像,这样我们就完成了docker镜像仓库的高可用
 
 

部署docker镜像仓库及高可用的更多相关文章

  1. 离线手动部署docker镜像仓库——harbor仓库(HTTPS)

    实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...

  2. 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用

    本文作者系:视野金服工程师 | 吴海胜 首发于 Nebula Graph 论坛:https://discuss.nebula-graph.com.cn/t/topic/1388 一.前言 本文介绍如何 ...

  3. docker 镜像仓库 Harbor 部署 以及 跨数据复制

    docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...

  4. [Docker]Harbor部署私有镜像仓库

    Harbor部署私有镜像仓库 认识: Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器. 部署环境: CentOS7 Python2.7.5 Docker CE ...

  5. lvs+keepalived部署k8s v1.16.4高可用集群

    一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...

  6. Centos7.6部署k8s v1.16.4高可用集群(主备模式)

    一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...

  7. 你必须知道的Docker镜像仓库的搭建

    近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需要选 ...

  8. 自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构

    自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构 欢迎加QQ群:1026880196 进行交流学习 环境说明: 1. 满足一台电脑一个网卡的环境 ...

  9. Docker笔记2:Docker 镜像仓库

    Docker 镜像的官方仓库位于国外服务器上,在国内下载时比较慢,但是可以使用国内镜像市场的加速器(比如阿里云加速器)以提高拉取速度. Docker 官方的镜像市场,可以和 Gitlab 或 GitH ...

随机推荐

  1. JDBC事务提交机制以及解决方案

    JDBC中的事务是自动提交的,什么是自动提交? 只要任意执行一条DML语句,则自动提交一次.这是JDBC默认的事务行为.但是实际业务当中,通常都是N条DML语句共同联合才能完成的,必须保证它们这些DM ...

  2. Java蓝桥杯练习题——求小数n位后3个数

    求整数除法小数点后第n位开始的3位数 位数不足的补0,如0.125小数第3位后三位:0.12500→500 输入格式:a b n,空格分开,a是被除数,b是除数,n是小数后的位置 输出格式:3位数字, ...

  3. 怎样安装Arch Linux以及Deepin桌面环境

    一.概述 Arch Linux 是一个轻量级的Linux发行版本,实际上,Arch Linux提供给用户很多选择,用户可以自定义自己的安装过程,不x像其他很多的Linux发行版本,安装过程甚至是一个只 ...

  4. 【线程池】toString

    java.util.concurrent.RejectedExecutionException: Task com.personal.practice.jvm.Jstacktest$1@7d605a5 ...

  5. Java安全之JNI绕过RASP

    Java安全之JNI绕过RASP 0x00 前言 前面一直想看该JNI的相关内容,但是发现JNI的资料还是偏少.后面发现JNI在安全中应用非常的微妙,有意思. 0x01 JNI概述 JNI的全称叫做( ...

  6. 这可能是最为详细的Docker入门总结

    写在前面 毕设是关于区块链的,自然就用到了docker,感觉到了docker的强大.学习源于总结,所以找了一些资料,这篇文章原作写的不错,看了好多遍哈哈. 这可能是最为详细的Docker入门总结 市面 ...

  7. 第二章、PyQt5应用构建详细过程介绍

    老猿Python博文目录 老猿Python博客地址 一.引言 在上节<第一章.PyQt的简介.安装与配置>介绍了PyQt5及其安装和配置过程,本节将编写一个简单的PyQt5应用,介绍基本的 ...

  8. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的clicked信号参数QAbstractButton *解决办法

    一.引言 QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpRequested,在<PyQt(Python+Qt)学习随笔:D ...

  9. CTFHub Web题学习笔记(Web前置技能+信息泄露题解writeup)

    今天CTFHub正式上线了,https://www.ctfhub.com/#/index,之前有看到这个平台,不过没在上面做题,技能树还是很新颖的,不足的是有的方向的题目还没有题目,CTF比赛时间显示 ...

  10. 学习JUC源码(1)——AQS同步队列(源码分析结合图文理解)

    前言 最近结合书籍<Java并发编程艺术>一直在看AQS的源码,发现AQS核心就是:利用内置的FIFO双向队列结构来实现线程排队获取int变量的同步状态,以此奠定了很多并发包中大部分实现基 ...