欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

部署docker-consul群集,Harbor构建Docker私有仓库

发布时间:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 部署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私有仓库的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。