文章目录

  • 部署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私有仓库相关推荐

  1. Docker 私有仓库部署和管理 | Harbor 概述 - 核心组件 - 架构拓扑 | Harbor 构建 Docker 私有仓库实战(理论+实操,超详细!)

    文章目录 一.Docker Harbor 概述 1.Harbor 简介 2.Harbor 的优势 二.Harbor 的核心组件 1.Proxy 2.Registry 3.Core services 4 ...

  2. 使用Harbor构建docker私有仓库

    目录 一.概述 1.什么是Harbor 2.Harbor的优势 3.Docker私有仓库架构 4.Harbor 配置文件以及相关参数 (1)所需参数 (2)可选参数 二.使用Harbor构建docke ...

  3. Docker容器管理平台Humpback进阶-私有仓库

    Docker私有仓库 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢? 它实际上是从 registry.hub.doc ...

  4. docker安装各类软件以及创建私有仓库总结

    十一看了十次方的视频,特地对docker的操作进行了总结 前提docker安装完毕,docker安装https://www.cnblogs.com/yufeng218/p/8370670.html 里 ...

  5. Docker学习(5)——创建私有仓库,为私有仓库添加web界面

    一.什么是Docker 仓库? 仓库是集中存放镜像文件的场所.有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分.实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多 ...

  6. Docker学习(6)——registry私有仓库工作原理(续)

    前言 我们在前文中讲了如何搭建私有仓库,并且为私有仓库加密.添加简单的图形界面:因为篇幅限制,我们将在本文中补充registry工作原理 情景A:用户要获取并下载镜像. 情景A:具体工作流程如下: 用 ...

  7. Docker 环境:Nexus3.x 的私有仓库

    Nexus3.x 的私有仓库 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 使用 Docker 官方的 Registry 创建的仓库面临一些维护问 ...

  8. Docker Hub + Github 自动化构建docker镜像

    自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便. 有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像. 而自动创建允许用户通过Doc ...

  9. 使用Docker基于Nexus3快速搭建Maven私有仓库

    文章目录 前言 问题分析 环境搭建 说明 Nexus3安装 本地Maven配置 修改setting.xml 上传本地Jar 使用本地包 结合Idea上传本地项目至私有库 前言 近期在做系统优化,重构等 ...

最新文章

  1. 几种Linux段错误调试方法
  2. 记录Flex布局的属性
  3. NOI Day1线上同步赛梦游记
  4. 北邮OJ 90. 字符串转换
  5. 35岁以上的程序员们,后来都干什么去了?
  6. semantic ui要装什么才能使用
  7. 数据库一对一,一对多,多对多关系
  8. 【DB】部分MySQL操作记录
  9. bzoj 3111: [Zjoi2013]蚂蚁寻路(DP)
  10. 循序渐进之Spring AOP(3) - 配置代理
  11. JAVA简历解析(无规则简历)
  12. oracle密码过期之后如何修改成永久不过期
  13. css中的@media用法总结
  14. 使用ShareSDK实现QQ登录和分享操作
  15. WGCLOUD部署对服务器硬件配置的一些建议
  16. java构造方法中this_Java中this关键字在构造方法中的使用
  17. bodgeito通关教程
  18. 出书最多 [2021年12月 电子学会C语言编程等级考试二级真题解析]
  19. Java就业方向有哪些?学习Java开发能做什么?
  20. 高速信号的完整性分析

热门文章

  1. 高并发服务遇 redis 瓶颈引发的事故
  2. 音视频技术开发周刊 | 140
  3. 音视频技术开发周刊 83期
  4. 剑指offer之11-15题解
  5. 从万物互联到万物智联,物联网的下一个爆发点在哪里?
  6. 前端性能分析工具利器
  7. 【内核模块auth_rpcgss】netns引用计数泄露导致容器弹性网卡残留
  8. 使用 pyenv 管理 Python 版本
  9. 解读直播连麦与点播加密
  10. Unknown SSL protocol error in connection to xxx:443