了解基础名称
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
Consul是一个分布式、高可用的系统,是一个为了解决在生产环境中服务注册,服务发现,服务配置的一个工具,它有多个组件,提供如下几个关键功能:
容器跟新拓扑图
需要一下服务
案例需要
实现单机网络下容器与容器之间互通
使用Docker compose创建容器
搭建Consul服务实现自动发现和更新
以下服务都是在有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默认
添加项目
添加镜像仓库
登录
[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
实验前提2台服务器
服务端:192.168.136.81 需要配置软件:Docker,docker-compose Docker consul
服务端:192.168.136.30 需要配置软件:Docker,Gliderlabs/Registrator,consul-template
实验目的:
在192.168.136.81中配置docker-compose非常适合组合使用多个容器进行开发的场景
导入docker-compose 模板
[root@localhost ~]# chmod +x docker-compose
让系统识别
[root@localhost ~]# mv docker-compose /usr/local/bin/
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 leader
leader = true
leader_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
在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 nginx
docker 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是一个守护进程,用于实时查询Consu集群信息,
并更新文件系统上任意数量的指定模板,生成配置文件。更新完成以后,
可以选择运行shell命令执行更新操作,重新加载Nginx。Consul-Template
可以查询Consul中的服务目录、Key.Key-values等。
这种强大的抽象功能和查询语言模板可以使Consul-Template特别适合动态的创建配置文件。
例如∶创建Apache/Nginx Proxy Balancers、Haproxy Backends
[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;
}
}
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是跟新模板信息
配置生成文件
[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