Docker 安装 Consul

相关站点

拉取 Consul 镜像

1
2
3
4
5
# 拉取最新版本的镜像
# docker pull consul:latest

# 拉取特定版本的镜像
# docker pull consul:1.7.3

Docker 安装 Consul(单机)

1
2
3
4
5
6
7
# 创建并启动容器,默认是以开发模式启动,数据保存在内存中
# docker run -d --name=consul -e CONSUL_BIND_INTERFACE=eth0 consul:1.7.3

# 查看容器的运行状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c43babcc760 consul:1.7.3 "docker-entrypoint.s…" 38 seconds ago Up 37 seconds 8300-8302/tcp, 8500/tcp, 8301-8302/udp, 8600/tcp, 8600/udp consul

Docker 安装 Consul(集群)

下面将演示在开发模式下,如何创建拥有 3 个节点的 Consul 集群,数据默认保存在内存中,开发模式下可以直接通过 8500 端口访问 Consul 的 WebUI 界面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 创建并启动第一个节点
# docker run -d --name=consul-node1 -p 8500:8500 -e CONSUL_BIND_INTERFACE=eth0 consul:1.7.3

# 查看第一个节点的IP
# docker inspect -f='{{.NetworkSettings.IPAddress}}' consul-node1

# 创建并启动第二个节点,172.17.0.3是第一个节点的IP
# docker run -d --name=consul-node2 -p 8500:8500 -e CONSUL_BIND_INTERFACE=eth0 consul:1.7.3 agent -dev -join=172.17.0.3

# 创建并启动第三个节点,172.17.0.3是第一个节点的IP
# docker run -d --name=consul-node3 -p 8500:8500 -e CONSUL_BIND_INTERFACE=eth0 consul:1.7.3 agent -dev -join=172.17.0.3

# 查看容器的运行状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ac5832f79f4 consul:1.7.3 "docker-entrypoint.s…" 31 seconds ago Up 30 seconds 8300-8302/tcp, 8500-8500/tcp, 8301-8302/udp, 8600/tcp, 8600/udp consul-node3
533b0f12877a consul:1.7.3 "docker-entrypoint.s…" 56 seconds ago Up 55 seconds 8300-8302/tcp, 8500-8500/tcp, 8301-8302/udp, 8600/tcp, 8600/udp consul-node2
d25f90dffa94 consul:1.7.3 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 8300-8302/tcp, 8500-8500/tcp, 8301-8302/udp, 8600/tcp, 8600/udp consul-node1

# 在第一个容器中运行consul命令来查询集群中的所有成员
# docker exec -t consul-node1 consul members
Node Address Status Type Build Protocol DC Segment
1ac5832f79f4 172.17.0.5:8301 alive server 1.7.3 2 dc1 <all>
533b0f12877a 172.17.0.4:8301 alive server 1.7.3 2 dc1 <all>
d25f90dffa94 172.17.0.3:8301 alive server 1.7.3 2 dc1 <all>

# 访问web管理界面
# 浏览器访问:http://172.17.0.3:8500

Consul 容器的持久化

在开发模式下启动 Consul 容器,数据默认保存在内存中,容器重启后数据会丢失;若想使用 Docker 的数据卷持久化容器里的数据,可以挂载以下目录,如 docker -v /usr/share/consul/data:/consul/data

  • /consul/data:Consul 存放数据的目录
  • /consul/config:Consul 存放配置文件的目录