Docker高级管理(实例演示!!!)

Docker网络通信Docker单机网络拓扑图:
端口映射:端口映射机制将容器内的服务提供给外部网络访问可随机或指定映射端口范围docker run -d -P httpd:centosdocker run -d -p 49888:80 httpd:centos容器互联在源容器和接收容器间建立一条网络通信隧道使用docker run命令–link选项实现容器间互联通信实现容器互联docker run -d -P --name web1 httpd:centosdocker run -d -P --name web2 --link web1:web1httpd:centosdocker exec -it web2 /bin/bashping web1Docker Compose容器编排Docker Compose的前身是Fig,它是一个定义及运行多个Docker容器的工具使用Docker Compose不再需要使用shell脚本来启动容器Docker Compose非常适合组合使用多个容器进行开发的场景Docker Compose环境安装[root@localhost ~]# curl -Lhttps://github.com/docker/compose/releases/download/1.21.1 /docker-compose-`uname -s`-`uname -m`-o /usr/local/bin/docker-compose[root@localhost ~ ]# chmod +x /usr/local/bin/docker-compose[root@localhost ~ ]# docker-compose -vDocker Compose文件结构[root@localhost compose_ Inmp]# vim docker-compose.ymlYAML是一种标记语言很直观的数据序列化格式文件格式及编写注意事项1.不支持制表符tab键缩进,需要使用空格缩进2.通常开头缩进2个空格3.字符后缩进1个空格,如冒号、逗号、横杠4.用井号注释5.如果包含特殊字符用单引号引起来6.布尔值必须用引号括起来Docker Compse配置常用字段:字段描述build dockerfile context指定Dockerfile文件名构建镜像上下文路径image指定镜像command执行命令,覆盖默认命令container name指定容器名称,由于容器名称时唯一的,如果指定自定义名称,则无法scaledeploy指定部署和运行服务相关配置,只能在Swarm模式使用environment添加环境变量networks加入网络ports暴露容器端口,与-p相同,但端口不能低于60volumes挂载宿主机路径或命令卷restart重启策略,默认no,always,no -failure,unless-stopedhostname容器主机名Docker Compse常用命令:字段描述build重新构建服务ps列出容器up创建和启动容器exec在容器里面执行命令scale指定一个服务容器启动数量top显示容器进程logs查看容器输出down删除容器/网络/数据卷和镜像stop/start/restart停止/启动/重启服务Compose命令说明基本的使用格式docker-compose [options] [COMMAND] [ARGS...]docker-compose选项--verbose输出更多调试信息--version打印版本并退出-f, --file FILE使用特定的compose模板文件,默认为docker-compose.yml-p, --project-name NAME指定项目名称,默认使用目录名称Docker consul容器服务更新与发现容器服务更新与发现拓扑图
ConsulConsul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置Consul的特性1.Consul支持健康检查,允许存储键值对2.一致性协议采用Raft算法,用来保证服务的高可用3.成员管理和消息广播采用GOSSIP协议,支持ACL访问控制方便部署,与Docker等轻量级容器可无缝配合构建自动发现的Docker服务架构建立Consul服务
1.每个提供服务的节点上都要部署和运行Consul的agent2.Consul agent有两种运行模式ServerClient3.Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关Consul常用的命令-v 数据卷-d 放在后台执行-i 标准性输入-t 分配伪终端Consul的作用1.做编排时需要修改配置文件,实现多配置文件同时修改2.扩展性的文件放在vhost中,节偶的方式一、安装Docker-ce引擎#安装依赖包yum install yum-utils device-mapper-persistent-data lvm2 -y#设置阿里云镜像源yum-config-manager --add-repo docker-ce.repo install -y docker-ce#关闭防火墙及增强型安全功能systemctl stop firewalld.servicesetenforce 0#启动Docker并设置为开机自启动systemctl start docker.servicesystemctl enable docker.service#检查相关进程开启情况ps aux | grep docker#重载守护进程systemctl daemon-reload#重启服务systemctl restart docker二、部署docker-compose#下载安装composecurl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose#提权方便调用chmod +x /usr/local/bin/docker-compose#建立compose站点mkdir /root/docker_compose三、部署nginx+Tomcat#建立compose文件vim /root/docker-compose/docker-compose.yml#compose版本号,有1、2、3version: '3.3'#服务名称services: nginx:#主机名 hostname: nginx#建立镜像需要的目录、dockerfile脚本名 build: context: ./nginx dockerfile: Dockerfile#映射宿主机端口 ports: - 1216:80 - 1200:443#工作组:同一集群一个名字 networks: - test#建立数据集的目录 volumes: - ./wwwroot:/usr/local/nginx/html tomcat: hostname: tomcat build: context: ./tomcat dockerfile: Dockerfile ports: - 888:8080 networks: - testnetworks: test:#需要建立新镜像的服务需要放在compose工作站点中[root@localhost docker_compose]# lsdocker-compose.yml nginx tomcat#建立容器“-f” 指定compose文件docker-compose -f docker-compose.yml up -d四、docker-consul+template实验环境
名称角色IP地址所需环境包centos7-1master192.168.142.128Docker-ce、Compose 、Consul、Consul-templatecentos7-2slave1192.168.142.129Docker-ce、registratorcentos7-minslave2192.168.142.130Docker-ce、registratormaster端操作#安装Consul[root@localhost ~]# mkdir consul[root@localhost ~]# cd consul/[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip[root@localhost consul]# lsconsul 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.142.128 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
#查看后台进程
[root@localhost consul]# jobs
[1]+ 运行中 consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.142.128 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log &
“agent” 使用agent代理功能
“-server” 提供server功能
“-bootstrap” 参与选举为领袖
“-ui” 提供用户界面
“-data-dir” 参数存储位置
“-bind” 绑定地址
“-node” 定义节点名称
- 检查群集状态```shell#查看群集信息[root@localhost consul]# consul membersNode Address Status Type Build Protocol DCconsul-server01 192.168.142.128:8301 alive server 0.9.2 2 dc1#过滤leader信息[root@localhost consul]# consul info | grep leader leader = true leader_addr = 192.168.142.128:8300通过httpd api 获取集群信息curl 127.0.0.1:8500/v1/status/peers #查看集群server成员curl 127.0.0.1:8500/v1/status/leader #集群Raf leadercurl 127.0.0.1:8500/v1/catalog/services #注册的所有服务。curl 127.0.0.1:8500/v1/catalog/nginx #查看nginx服务信息curl 127.0.0.1:8500/v1/catalog/nodes #集群节点详细信息使节点服务器中的容器自动加入#安装registrator(注册器)#该工具可检查容器运行状态自动 进行注册,还可注销docker容器的服务[root@localhost ~]# docker run -d \--name=registrator \--net=host \-v /var/run/docker.sock:/tmp/docker.sock \--restart=always \gliderlabs/registrator:latest \-ip=192.168.142.129 \consul:#192.168.142.128:8500测试功能是否正常[root@localhost ~]# docker run -itd -p:83:80 --name test-01 -h test01 nginx[root@localhost ~]# docker run -itd -p:84:80 --name test-02 -h test02 nginx[root@localhost ~]# docker run -itd -p:85:80 --name test-03 -h test03 httpd[root@localhost ~]# docker run -itd -p:86:80 --name test-04 -h test04 httpd验证群集是否建立成功浏览器中输入http:#192.168.142.128:8500,单击“NODES”,然后点击“consurl-seerver01”,即可看到五个服务(图形化界面)
五、建立template进行代理手工编译安装nginx1.12.0
(前面博客有详细的)
安装consul-templatetemplate属于守护进程,用于实时查询consul集群信息,并实时使用模板进行配置文件的生成。[root@localhost ~]# unzip consul-template_0.19.3_linux_amd64.zip#启用template命令[root@localhost ~]# mv consul-template /usr/bin/撰写nginx配置文件模板[root@localhost consul]# vim nginx.ctmpl #nginx配置文件的模板upstream http_backend { #服务器池的名称{{range service "nginx"}}server {{.Address}:{{.Port}}; #调用变量:服务器节点的地址和端口{{end}}}server {
listen 110;
server_name localhost 192.168.142.128; #master端地址
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; #后端服务器IP
proxy_set_header Client-IP $remote_addr; #client的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #forward跳转地址
proxy_pass http:#http_backend; #请求跳转给http_backend服务器池
}
}
- 修改配置文件```shell#更改nginx配置文件[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf#在18行下插入以下内容include vhost/\*.conf; #添加include方便nginx识别模板生成的配置文件#此时还没有这个文件,需要去创建[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/[root@localhost conf]# mkdir vhost #创建虚拟机目录#启用template模板(启用后会进入监控模式)[root@localhost ~]# consul-template -consul-addr 192.168.142.128:8500 \-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \--log-level=info“-consul-addr” #指定consul端地址“-template” #后方从左到右分别为:模板文件路径、生成的配置文件名称、重载nginx“–log-level” #写入日志的等级谢谢阅读!!!
了解更多相关内容欢迎关注http://www.vecloud.com/