部署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
系统可以识别
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私有仓库的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: x99内存性能揭秘:游戏加载速度惊人提升
- 下一篇: Docker资源控制与TLS加密通信