如何使用Docker的Compose工具和配置consul服务器
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,本文分享的是Docker容器中Compose编排工具和consul工具的使用,以及consul服务器的配置,希望大家根据这篇文章可以有所收获。docker compose配置常用字段字段描述build
千家信息网最后更新 2024年11月18日如何使用Docker的Compose工具和配置consul服务器
本文分享的是Docker容器中Compose编排工具和consul工具的使用,以及consul服务器的配置,希望大家根据这篇文章可以有所收获。
docker compose配置常用字段
字段 | 描述 |
---|---|
build dockerfile context | 指定Dockerfile文件名构建镜像上下文路径 |
image | 指定镜像 |
command | 执行命令,覆盖默认命令 |
container name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale |
deploy | 指定部署和运行服务相关配置,只能在Swarm模式使用 |
environment | 添加环境变量 |
networks | 加入网络 |
ports | 暴露容器端口,与-p相同,但端口不能低于60 |
volumes | 挂载宿主机路径或命令卷 |
restart | 重启策略,默认no,always, no-failure,unless-stoped |
hostname | 容器主机名 |
docker compose常用命令
字段 | 描述 |
---|---|
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指定项目名称,默认使用目录名称
1、安装docker容器和compose编排工具
[root@localhost ~]# yum install -y \> yum-utils \ ##设置源工具> device-mapper-persistent-data \ ##映射工具> lvm2 ##映射工具[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo##加载阿里云镜像源[root@localhost ~]# yum install docker-ce -y ##安装docker容器[root@localhost ~]# systemctl stop firewalld.service ##关闭防火墙[root@localhost ~]# setenforce 0[root@localhost ~]# systemctl start docker ##开启docker容器[root@localhost ~]# systemctl enable docker ##开机自启动[root@localhost ~]# ps aux | grep docker ##查看docker进程是否开启[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF' ##进行镜像加速> {> "registry-mirrors": ["https://3a8s9zx5.mirror.aliyuncs.com"]> }> EOF{ "registry-mirrors": ["https://3a8s9zx5.mirror.aliyuncs.com"]}[root@localhost ~]# systemctl daemon-reload ##重载守护进程[root@localhost ~]# systemctl restart docker ##重启docker服务[root@localhost ~]# mount.cifs //192.168.100.100/LNMP-C7 /mnt/Password for root@//192.168.100.100/LNMP-C7: [root@localhost ~]# cd /mnt/docker/[root@localhost docker]# cp -p docker-compose /usr/bin/ ##将docker-compose 复制到 /usr/bin/ 目录下[root@localhost docker]# docker-compose -v ##查看版本信息docker-compose version 1.21.1, build 5a3f1a3
2、创建Nginx编排实例
[root@localhost docker]# cd ~[root@localhost ~]# mkdir compose-nginx ##创建工作目录[root@localhost ~]# cd compose-nginx/[root@localhost compose-nginx]# mkdir nginx ##创建Nginx的目录[root@localhost compose-nginx]# cd nginx/[root@localhost nginx]# vim run.sh ##编辑启动脚本#!/bin/bash/usr/local/nginx/sbin/nginx ##启动Nginx服务[root@localhost nginx]# mkdir /abc[root@localhost nginx]# mount.cifs //192.168.100.3/LNMP-C7 /abc/Password for root@//192.168.100.3/LNMP-C7: [root@localhost nginx]# cp /abc/nginx-1.12.2.tar.gz ./ ##将Nginx的压缩包复制到当前目录下[root@localhost nginx]# vim Dockerfile ##编写容器文件FROM centos:7RUN yum -y updateRUN yum -y install pcre-devel zlib-devel gcc gcc-c++ makeRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.2.tar.gz /usr/local/srcWORKDIR /usr/local/srcWORKDIR nginx-1.12.2RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make && make installENV PATH /usr/local/nginx/sbin:$PATHEXPOSE 80EXPOSE 443RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.confADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"][root@localhost nginx]# cd ../[root@localhost compose-nginx]# vim docker-compose.yml ##创建compose模板脚本version: '3' ##版本services: ##服务 nginx: hostname: nginx ##容器主机名 build: context: ./nginx ##创建容器的文件路径 dockerfile: Dockerfile ports: - 1216:80 ##映射端口 - 1217:443 networks: - abc ##网络名称 volumes: - ./wwwroot:/usr/local/nginx/html ##数据卷关联宿主站点目录networks: ##对外申明网络 abc:[root@localhost compose-nginx]# docker-compose -f docker-compose.yml up -d##执行compose脚本开启,-d守护进程[root@localhost compose-nginx]# cd wwwroot/[root@localhost wwwroot]# vim index.htmlthis is test!!! ##编辑首页内容[root@localhost wwwroot]# yum install tree -y[root@localhost wwwroot]# tree ~ ##查看整个所需的内容结构/root├── anaconda-ks.cfg├── compose-nginx│ ├── docker-compose.yml ##编排模板│ ├── nginx│ │ ├── Dockerfile ##容器脚本│ │ ├── nginx-1.12.2.tar.gz ##安装包│ │ └── run.sh ##启动服务脚本│ └── wwwroot│ └── index.html ##网站首页
3、用浏览器查看网页
consul概述
consul是开源工具,用于实现分布式系统的服务发现与配置
consul的特性:
(1)consul支持健康检查,允许存储键值对(2)一致性协议采用Raft算法,用来保证服务的高可用(3)成员管理和消息广播采用GOSSIP协议,支持ACL访问控制
方便部署,与docker等轻量级容器可无缝配合
建立consul服务
- 每个提供服务的节点上都要部署和运行consul和agent
- consul agent有两种运行模式:server,client
- server和client知识consul集群层面的区分,与搭建在cluster之上的应用服务无关
架构拓扑图
实验环境
consul服务端 192.168.13.128 Docker-ce 、Compose 3、Consul、Consul-templateclient客户节点 192.168.13.129 Docker-ce 、registrator
1、配置consul服务器
[root@consul ~]# mkdir consul[root@consul ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/Password for root@//192.168.100.3/LNMP-C7: [root@consul ~]# cd /mnt/docker/ [root@consul docker]# cp consul_0.9.2_linux_amd64.zip /root/consul/[root@consul docker]# cd /root/consul/[root@consul consul]# unzip consul_0.9.2_linux_amd64.zip ##解压consulArchive: consul_0.9.2_linux_amd64.zip inflating: consul [root@consul consul]# mv consul /usr/bin/ ##便于系统识别[root@consul consul]# consul agent \ ##代理> -server \ ##提供server> -bootstrap \> -ui \ ##web访问界面> -data-dir=/var/lib/consul-data \ ##数据存储目录> -bind=192.168.13.128 \ ##本地地址> -client=0.0.0.0 \ ##所有节点> -node=consul-server01 &> /var/log/consul.log & ##指定本地节点名称[root@consul consul]# consul members ##查看群集信息Node Address Status Type Build Protocol DCconsul-server01 192.168.13.128:8301 alive server 0.9.2 2 dc1[root@consul consul]# consul info | grep leader ##查看leader leader = true leader_addr = 192.168.13.128:8300[root@consul consul]# systemctl stop firewalld.service ##关闭防火墙[root@consul consul]# setenforce 0##通过httpd api获取集群信息[root@localhost consul]# curl 127.0.0.1:8500/v1/status/peers ##查看群集server成员[root@localhost consul]# curl 127.0.0.1:8500/v1/status/leaders ##群集中 Raf leader[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/services ##注册的所有服务[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/nodes ##群集节点详细信息[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/nginx ##查看 nginx 服务信息
2、配置client节点服务器
[root@client ~]# docker run -d \> --name=registrator \ ##安装registrator自动注册功能 > --net=host \ ##指定网络> -v /var/run/docker.sock:/tmp/docker.sock \ ##指定数据卷> --restart=always \ > gliderlabs/registrator:latest \ ##镜像> -ip=192.168.13.129 \ ##本地地址> consul://192.168.13.128:8500 ##consul服务器地址
3、在节点服务器上测试发现功能是否正常
[root@client ~]# docker run -itd -p 83:80 --name test-01 -h test01 nginx[root@client ~]# docker run -itd -p 84:80 --name test-02 -h test02 nginx[root@client ~]# docker run -itd -p 88:80 --name test-03 -h test03 httpd[root@client ~]# docker run -itd -p 89:80 --name test-04 -h test04 httpd[root@client ~]# systemctl stop firewalld.service ##关闭防火墙[root@client ~]# setenforce 0
4、验证http和Nginx服务是否注册到consul
consul-template概述
是基于 Consul 的自动替换配置文件的应用;
可以查询 Consul 中的服务目录:Key、Key-values等;
特别适合动态的创建配置文件;
是一个守护进程,用于实时查询 consul 集群信息;
1、在consul服务器上配置模板文件
[root@consul consul]# vim /root/consul/nginx.ctmpl upstream http_backend { ##申明后端服务器池 {{range service "nginx"}} server {{.Address}}:{{.Port}}; {{end}}}server { listen 1216; ##代理端口 server_name localhost 192.168.13.128; ##本地地址 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-Fprwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_backend; ##跳转后端服务器池 }}
2、在consul服务器上安装配置Nginx
[root@consul consul]# cd /mnt/[root@consul mnt]# tar zxvf nginx-1.12.2.tar.gz -C /opt/ ##解压Nginx[root@consul mnt]# cd /opt/nginx-1.12.2[root@consul nginx-1.12.2]# yum install gcc gcc-c++ pcre-devel zlib-devel -y ##安装组件[root@consul nginx-1.12.2]# ./configure --prefix=/usr/local/nginx ##配置[root@consul nginx-1.12.2]# make && make install[root@consul nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf ##修改Nginx配置文件 17 http { 18 include mime.types; 19 include vhost/*.conf; ##指定虚拟主机目录 [root@consul nginx-1.12.2]# mkdir /usr/local/nginx/conf/vhost ##创建虚拟主机目录[root@consul nginx-1.12.2]# mkdir /var/log/nginx ##创建模板中日志文件目录[root@consul nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##创建软连接[root@consul nginx-1.12.2]# nginx ##开启Nginx服务[root@consul nginx-1.12.2]# netstat -natp | grep nginx
3、在consul服务器上配置并启动templeta
[root@consul nginx-1.12.2]# cd /mnt/docker/[root@consul docker]# cp consul-template_0.19.3_linux_amd64.zip /root/[root@consul docker]# cd /root/[root@consul ~]# unzip consul-template_0.19.3_linux_amd64.zip ##安装templetaArchive: consul-template_0.19.3_linux_amd64.zip inflating: consul-template [root@consul ~]# mv consul-template /usr/bin[root@consul ~]# consul-template -consul-addr 192.168.13.128:8500 \ ##指定consul本地地址> -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \##指定template的路径> --log-level=info ##日志级别[root@consul ~]# cd /usr/local/nginx/conf/vhost/[root@consul vhost]# lskgc.conf ##自动生成配置文件模板upstream http_backend { server 192.168.13.129:83; ##自动生成后端容器服务地址及端口号 server 192.168.13.129:84;}server { listen 1216; server_name localhost 192.168.13.128; 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-Fprwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_backend; }}
用浏览器查看
也可在后端节点服务器上通过docker logs -f test-01查看来访地址为128
4、在client端创建一个 nginx 容器节点,检测服务发现及配置更新,不要关闭防火墙
[root@localhost ~]# docker run -itd -p:85:80 --name test-05 -h test05 nginx##继续浏览器访问128服务端[root@client ~]# docker logs -f test-05192.168.13.128 - - [09/Jan/2020:11:05:39 +0000]##轮询访问,还是128服务端访问的节点,实现了负载均衡
以上就是Docker使用Compose工具和配置consul服务器的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注行业资讯!
服务
容器
配置
服务器
目录
文件
节点
工具
信息
名称
地址
命令
模板
网络
脚本
进程
镜像
主机
内容
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全的8个习惯
标准版加密服务器已卸载怎么还有
虚拟定位服务器的作用
服务器接口类型
逆战打猎场连接服务器失败
戴尔服务器4000
sa软件开发过程
网络安全保卫大队待遇怎么样
网络安全先进学校事迹材料
四川人工智能软件开发费用
数据库优化与技术
仪表软件开发费用
怎么定义数据库的名字
进销存管理订单数据库
软件开发 什么合同
数据库学号前八位是班级编号
服务器提示web数据格式化
重庆联想服务器维修维保多少钱
神舟通用数据库对标
武汉大学网络安全调剂
5e一直卡在加载服务器
基因身份识别数据库
华宇软件开发什么软件
美国两党网络安全法案
郑州大学 数据库
中科大高级数据库教材
杭州笨马网络技术有限公司深圳
网络安全培训的公司排名
网络安全教育题目及答案
银川计算机网络技术学校