如何使用Docker的Compose工具和配置consul服务器
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文分享的是Docker容器中Compose编排工具和consul工具的使用,以及consul服务器的配置,希望大家根据这篇文章可以有所收获。docker compose配置常用字段字段描述build
千家信息网最后更新 2026年10月31日如何使用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 5a3f1a32、创建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 、registrator1、配置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 04、验证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 nginx3、在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安全错误
数据库的锁怎样保障安全
瑰夏咖啡
上海卓越科技互联网
广州大一互联网络科技有限公司
美国互联网科技巨头监管
港股互联网科技股
互联网金融 科技金融
互联网金融公司科技
美国互联网科技
广州紫鲸互联网科技
中盈科技互联网信息有限公司
北京大学互联网科技怎么样
互联网科技中介
黑科技闪耀互联网之光
恒生互联网科技指数跳水
互联网科技大奖都有哪些公司
允成互联网科技有限公司融资
云鲸互联网络科技有限公司
北京天晋互联网科技有限公司
互联网科技的前景
互联网科技创业有什么好项目
互联网科技
南京欣网互联网络科技有限公司
中资互联网科技
银川新华互联网科技学校地址
互联网汽车科技小镇
移动互联网科技股
青岛科技大学互联网大赛研究生
互联网科技融合创新
上海万顺科技互联网有限公司招聘
利用互联网等科技手段