部署docker-consul群集,Harbor构建Docker私有仓库
文章目录
- 部署docker-consul群集,Harbor构建Docker私有仓库
- 了解Harvor
- 案例概述
- Docker consul服务了解
- 部署Harbor服务过程
- 不是本地上传镜像操作
- 在用户端操作
- 部署Docker consul群集实验过程
- 安装部署docker-compose
- 配置Docker consul服务
- 安装Gliderlabs/Registrator
- 安装consul-template
- 准备template nginx模板
- 编译安装nginx
- 配置开启template
- 查看日志
部署docker-consul群集,Harbor构建Docker私有仓库
了解Harvor
- Harbor是VMware公司开源的企业级Docker Registry项目
- Harbor的优势
●基于角色控制
●基于镜像的复制策略
●支持LDAPIAD
●图像删除和垃圾收集
●图形U
●审计
●RESTful API
案例概述
- 最近创鑫公司又提出一个新需求,将项目全部打包成镜
像部署私有仓库服务,经过几轮商讨,最终选择
Docker Harbor - Docker Harbor有可视化的Web管理界面,可以方便
管理Docker镜像,又提供了多个项目的镜像权限管理
及控制功能
了解基础名称
Proxy
●通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务
Registry
●负责储存Docker镜像,并处理docker push/pull命令
Core services
●Harbor的核心功能,包括UI、webhook、token服务
Database
●为core services提供数据库服务
Log collector
●负责收集其他组件的log,供日后进行分析
Harbor可选参数
●电子邮件设置、harbour_admin_password、auth_mode
●self_registration、token_expiration
●oproject_creation_restriction、verify_remote_cert
启动并安装Harbor
Docker consul服务了解
Consul是一个分布式、高可用的系统,是一个为了解决在生产环境中服务注册,服务发现,服务配置的一个工具,它有多个组件,提供如下几个关键功能:
- 服务发现: Consul的某些客户端可以提供一个服务,例如api或者mysql,其它客户端可以使用Consul去发现这个服务的提供者。使用DNS或者HTTP,应用可以很容易的找到他们所依赖的服务。
- 健康检查: Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%以下)。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机。
- 键值存储: 应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协作、leader选举等等。通过一个简单的HTTP API可以很容易的使用这个组件。
- 多数据中心: Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域。
容器跟新拓扑图
需要一下服务
- Consul-Template是一个守护进程,用于实时查询Consu集群信息
- docker-compose非常适合组合使用多个容器进行开发的场景
- Docker consul容器服务更新与发现
- Gliderlabs/Registrator可以检查容器运行状态自动注册,还可以注销
案例需要
实现单机网络下容器与容器之间互通
使用Docker compose创建容器
搭建Consul服务实现自动发现和更新
部署Harbor服务过程
以下服务都是在有docker的前提下部署的!!!
安装docker-compose
[root@localhost ~]# chmod +x docker-compose
系统可以识别
mv docker-compose /usr/local/bin/
查看是否安装
[root@localhost ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
安装harbor
[root@localhost ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
修改配置文件
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# vim harbor.cfg 5 hostname = 192.168.136.81
开启Harbor
[root@localhost harbor]# sh install.sh
输入地址查看
密码Harbor12345默认
添加项目
打开kgc没有创建镜像
添加镜像仓库
登录
[root@localhost harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1下载镜像
[root@localhost harbor]# docker pull nginx打标签
上传镜像到Harbor
[root@localhost harbor]# docker tag nginx:latest 127.0.0.1/kgc/nginx:v1上传镜像
[root@localhost harbor]# docker push 127.0.0.1/kgc/nginx
不是本地上传镜像操作
在开启一台服务端192.168.136.30
[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.136.81
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.136.81/v2/: dial tcp 192.168.136.81:443: connect: connection refuse
以上操作拒绝是因为交互默认使用HTPS但是私有默认使用的是HTTP服务
解决方法(下面都指向对方地址)
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
14 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.136.81
重启服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
登录到Harbor
docker login -u admin -p Harbor12345 http://192.168.136.81下载centos:7
[root@localhost ~]# docker pull centos:7标签
[root@localhost ~]# docker tag centos:7 192.168.136.81/kgc/centos7:v1上传镜像
[root@localhost ~]# docker push 192.168.136.81/kgc/centos7
游览器查看
在用户端操作
退出和登录
[root@localhost ~]# docker logout 192.168.136.81
[root@localhost ~]# docker login 192.168.136.81
移除Harbor所有容器清除
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost ~]# docker-compose down -v
部署Docker consul群集实验过程
实验前提2台服务器
服务端:192.168.136.81 需要配置软件:Docker,docker-compose Docker consul
服务端:192.168.136.30 需要配置软件:Docker,Gliderlabs/Registrator,consul-template
实验目的:
安装部署docker-compose
在192.168.136.81中配置docker-compose非常适合组合使用多个容器进行开发的场景
导入docker-compose 模板
[root@localhost ~]# chmod +x docker-compose
让系统识别
[root@localhost ~]# mv docker-compose /usr/local/bin/
配置Docker consul服务
Docker consul容器服务更新与发现
[root@localhost ~]# mkdir consul
[root@localhost ~]# cd consul/
解压consul服务包
[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip
让系统识别
[root@localhost consul]# mv consul /usr/bin/
配置服务软件
[root@localhost consul]# consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.136.81 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
解释
[root@localhost consul]# consul agent \ 安装agnt
-server \ 安装server
-bootstrap \ 选举
-ui \ 网页查看
-data-dir=/var/lib/consul-data \ 数据存放位置
-bind=192.168.136.81 \ 绑定自己地址
-client=0.0.0.0 \ 监听地址
-node=consul-server01 &> /var/log/consul.log & 在本地定义名称
查看群集信息
[root@localhost consul]# consul members
Node Address Status Type Build Protocol DC
[root@localhost consul]# consul info | grep leaderleader = trueleader_addr = 192.168.136.81:8300
通过httpd api 获取群集信息
curl 127.0.0.1:8500/v1/status/peers
群集Raf leader
curl 127.0.0.1:8500/v1/status/leader
查看服务
[root@localhost consul]# curl 127.0.01:8500/v1/catalog/services
群集节点信息信息
[root@localhost consul]# curl 127.0.01:8500/v1/catalog/nodes
打开游览器查看节点管理页面
输入地址192.168.136.81:8500
安装Gliderlabs/Registrator
在192.168.136.30容器安装Gliderlabs/Registrator
可以检查容器运行状态自动注册,还可以注销
[root@localhost consul]# docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.136.30 \
consul://192.168.136.81:8500
解释
[root@localhost consul]# docker run -d \ 以容器运行registrator
--name=registrator \ 名称--net=host \ 仅主机
-v /var/run/docker.sock:/tmp/docker.sock \ 建立数据卷
--restart=always \ 重启策略
gliderlabs/registrator:latest \ 下载镜像
-ip=192.168.136.30 \ 自己的ip
consul://192.168.136.81:8500 指向服务ip
测试服务发现是否功能正常
docker run -itd -p:83:80 --name test-01 -h test01 nginxdocker run -itd -p:84:80 --name test-02 -h test02 nginx[root@localhost ~]# docker run -itd -p:88:80 --name test-03 -h test03 httpd[root@localhost ~]# docker run -itd -p:89:80 --name test-04 -h test04 httpd
验证httpd和nginx服务是否注册到consul
在consul服务端查看服务
[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/services
{"consul":[],"httpd":[],"nginx":[]}[root@localhost consul]#
安装consul-template
Consul-Template是一个守护进程,用于实时查询Consu集群信息,
并更新文件系统上任意数量的指定模板,生成配置文件。更新完成以后,
可以选择运行shell命令执行更新操作,重新加载Nginx。Consul-Template
可以查询Consul中的服务目录、Key.Key-values等。
这种强大的抽象功能和查询语言模板可以使Consul-Template特别适合动态的创建配置文件。
例如∶创建Apache/Nginx Proxy Balancers、Haproxy Backends
准备template nginx模板
[root@localhost consul]# vim nginx.ctmpl upstream http_backend {{{range service "nginx"}}server {{.Address}}:{{.Port}};{{end}}
}server {listen 83;server_name localhost 192.168.136.81; access_log /var/log/nginx/kgc.cn-access.log;index index.html index.php;location / {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://http_backend;}
}
编译安装nginx
yum install -y gcc gcc-c++ pcre-devel zlib-devel
cd /opt
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.12.0]# make && make install
修改配置文件
[root@localhost conf]# cd /usr/local/nginx/conf/18 include mime.types; 19 include vhost/*conf; 添加20 default_type application/octet-stream;
创建vhost目录和日志
[root@localhost conf]# mkdir /usr/local/nginx/conf/vhost
[root@localhost conf]# mkdir /var/log/nginx
开启服务
[root@localhost conf]# /usr/local/nginx/sbin/nginx
查看不到83端口号,因为没有配置template
配置开启template
template是跟新模板信息
配置生成文件
[root@localhost conf]# cd /root/consul/
[root@localhost consul]# unzip consul-template_0.19.3_linux_amd64_\(1\).zip
让系统可以识别
[root@localhost consul]# mv consul-template /usr/local/bin/
配置监控(保持一直监控状态)
consul-template -consul-addr 192.168.136.81:8500 \
-template
重启开启终端查看配文件查看是否生成
查看日志
刷新网页192.168.136.81:83在192.168.136.30中查看日志,可以看到端口可以访问
[root@localhost ~]# docker logs -f test-01
[root@localhost ~]# docker logs -f test-02
部署docker-consul群集,Harbor构建Docker私有仓库相关推荐
- Docker 私有仓库部署和管理 | Harbor 概述 - 核心组件 - 架构拓扑 | Harbor 构建 Docker 私有仓库实战(理论+实操,超详细!)
文章目录 一.Docker Harbor 概述 1.Harbor 简介 2.Harbor 的优势 二.Harbor 的核心组件 1.Proxy 2.Registry 3.Core services 4 ...
- 使用Harbor构建docker私有仓库
目录 一.概述 1.什么是Harbor 2.Harbor的优势 3.Docker私有仓库架构 4.Harbor 配置文件以及相关参数 (1)所需参数 (2)可选参数 二.使用Harbor构建docke ...
- Docker容器管理平台Humpback进阶-私有仓库
Docker私有仓库 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢? 它实际上是从 registry.hub.doc ...
- docker安装各类软件以及创建私有仓库总结
十一看了十次方的视频,特地对docker的操作进行了总结 前提docker安装完毕,docker安装https://www.cnblogs.com/yufeng218/p/8370670.html 里 ...
- Docker学习(5)——创建私有仓库,为私有仓库添加web界面
一.什么是Docker 仓库? 仓库是集中存放镜像文件的场所.有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分.实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多 ...
- Docker学习(6)——registry私有仓库工作原理(续)
前言 我们在前文中讲了如何搭建私有仓库,并且为私有仓库加密.添加简单的图形界面:因为篇幅限制,我们将在本文中补充registry工作原理 情景A:用户要获取并下载镜像. 情景A:具体工作流程如下: 用 ...
- Docker 环境:Nexus3.x 的私有仓库
Nexus3.x 的私有仓库 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 使用 Docker 官方的 Registry 创建的仓库面临一些维护问 ...
- Docker Hub + Github 自动化构建docker镜像
自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便. 有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像. 而自动创建允许用户通过Doc ...
- 使用Docker基于Nexus3快速搭建Maven私有仓库
文章目录 前言 问题分析 环境搭建 说明 Nexus3安装 本地Maven配置 修改setting.xml 上传本地Jar 使用本地包 结合Idea上传本地项目至私有库 前言 近期在做系统优化,重构等 ...
最新文章
- 几种Linux段错误调试方法
- 记录Flex布局的属性
- NOI Day1线上同步赛梦游记
- 北邮OJ 90. 字符串转换
- 35岁以上的程序员们,后来都干什么去了?
- semantic ui要装什么才能使用
- 数据库一对一,一对多,多对多关系
- 【DB】部分MySQL操作记录
- bzoj 3111: [Zjoi2013]蚂蚁寻路(DP)
- 循序渐进之Spring AOP(3) - 配置代理
- JAVA简历解析(无规则简历)
- oracle密码过期之后如何修改成永久不过期
- css中的@media用法总结
- 使用ShareSDK实现QQ登录和分享操作
- WGCLOUD部署对服务器硬件配置的一些建议
- java构造方法中this_Java中this关键字在构造方法中的使用
- bodgeito通关教程
- 出书最多 [2021年12月 电子学会C语言编程等级考试二级真题解析]
- Java就业方向有哪些?学习Java开发能做什么?
- 高速信号的完整性分析