docker安装Consul笔记

安装过程

详细步骤如下:

首先拉取ConsulDocker镜像:

sh 复制代码
docker pull hashicorp/consul:1.18.1

创建Consul的配置文件和数据目录:

sh 复制代码
mkdir -p /srv/docker/consul/data
mkdir -p /srv/docker/consul/config

config目录下创建一个config.json配置文件:

sh 复制代码
vim /srv/docker/consul/config/config.json

在该文件中写入以下内容:

json 复制代码
{
  "datacenter": "dc1",
  "node_name": "consul-node",
  "server": true,
  "bootstrap_expect": 1,
  "data_dir": "/consul/data",
  "log_level": "INFO",
  "client_addr": "0.0.0.0",
  "bind_addr": "0.0.0.0",
  "ui": true
}

上面JSON中的字段内容含义详解:

  • datacenter:定义当前节点的数据中心名称,用于隔离服务发现和分布式操作。名称可自定义,如dc1us-west等。
  • node_name:指定节点名称,用于标识当前节点,必须在整个集群中唯一。如果未设置,Consul会生成一个随机名称。
  • server:指示当前节点是否为Consul服务器节点。Consul服务器节点负责存储集群状态和数据,并参与选举。
  • bootstrap_expect:定义服务器节点的预期数量,用于初始化集群。例如,设置为3时,至少需要3个服务器节点完成启动。
  • data_dir:指定数据存储目录。用于持久化存储Consul的数据,如状态信息、快照和事务日志。
  • log_level:设置日志级别。可选值:DEBUGINFOWARNERR等。
  • client_addr:定义客户端可访问的监听地址。0.0.0.0表示监听所有网络接口地址。可以根据需求改为特定的IP
  • bind_addr:设置Consul节点的绑定地址。单机部署(如开发测试)可使用环回地址或绑定到所有接口。
  • ui:启用Consul的内置Web UI。设为true后,Consul会开放Web UI界面,默认在8500端口提供访问。

接下来,使用下面命令启动Consul容器:

sh 复制代码
docker run -d \
    --name=consul \
    --restart=always \
    -p 8500:8500 \
    -p 8600:8600/udp \
    -v /srv/docker/consul/data:/consul/data \
    -v /srv/docker/consul/config:/consul/config \
    hashicorp/consul:1.18.1 \
    agent -config-dir=/consul/config

这里开启了85008600端口:8500映射ConsulWeb UIAPI,支持用户通过浏览器访问控制台或调用API8600映射DNS接口,提供服务发现的DNS查询功能。使用8600/udp进行端口暴露,是因为默认情况下DNS查询使用UDP协议,如果不显式声明UDP协议,Docker默认会只暴露TCP,导致应用无法通过UDP协议进行DNS查询。

agent -config-dir=/consul/config这一句指明使用容器内的配置文件启动Consul代理。

容器启动完成后,使用下面的地址访问ConsulWeb UI页面:

http 复制代码
http://<ip_address>:8500

出现如下页面,代表容器启动成功:

上述配置为单节点Consul,如需部署多节点集群,可根据需要进行配置。具体步骤将在使用时整理。


The end.

相关推荐
梦想的颜色1 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
千寻xun3 小时前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
Piko6148 小时前
锐捷 VSU 虚拟化堆叠配置
运维·网络·笔记
AOwhisky8 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
极客先躯9 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
Piko61410 小时前
锐捷交换机 DHCP Server部署
运维·网络·笔记
取地址符11 小时前
Rust学习笔记(基于Rustlings)(2):数据结构与集合
笔记·学习·rust
大E帝国子民111 小时前
Docker 部署 RocketMQ 5
docker·容器·rocketmq
A.零点11 小时前
期末复习,408考研数据结构:第一章绪论完整知识梳理与真题深度解读
c语言·数据结构·笔记·考研
EQ-雪梨蛋花汤11 小时前
【Unity笔记】VR 一体机画面锯齿、模型边缘闪烁、接缝抖动排查:MSAA、Mipmap、Render Scale、Z-Fighting 全流程记录
笔记·unity·vr