Docker-----compose搭建consul集群解析

本文详细介绍了如何使用Docker Compose搭建Consul集群,并探讨了Consul的关键特性,包括服务发现、健康检查、多数据中心支持。通过Docker Compose配置文件和命令,演示了从下载到构建Nginx的过程,以及如何实现容器服务自动加入Nginx集群,利用Consul-template动态更新配置文件。最后,通过实验展示了Consul如何帮助实现微服务的高效管理。

前言

一个大型的Docker组成的微服务应用中,容器的数量是非常庞大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦。Compose的出现正是为了解决这个问题。

一、Docker Compose简介

  • Docker Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig
  • Docker Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器,而不再需要使用shell脚本来启动容器
  • Docker Compose 非常适合组合使用多个容器进行开发的场景
  • Docker Compose 的文件结构
  • vim docker-compose.yml

YAML 是一种标记语言很直观的数据序列化格式。 文件格式及编写注意事项如下所示:

  • ① 不支持制表符Tab 建缩进,需要使用空格缩进

  • ② 通常开头缩进2个空格

  • ③ 字符后缩进1个空格,如:冒号,逗号,横杆

  • ④ 用#号注释

  • ⑤ 如果包含特殊字符用单引号引起来

  • ⑥ 布尔值必须用单引号括起来

Docker compose 使用的三个步骤:

  • ① 使用Dokcerfile 定义应用程序的环境

  • ② 使用docker-compose.yml 定义构成应用程序的服务,这样它们就可以再隔离环境中一起运行

  • ③ 最后执行 docker-compose up 命令来启动并运行整个应用程序

二、Docker compose配置信息

2.1、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 容器主机名

2.2、Dokcer compose 常用命令

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

2.3、Docker compose 命令参数详解

docker-compose 选项

  • –verbose 输出更多调试信息
  • –version 打印版本并退出
  • -f,–file FILE 使用特定的compose 模板文件,默认位docker-compose.yml
  • -p,–project-name NAME 指定项目名称,默认使用目录名称

三、Dokcer 编排实验

3.1、下载compose

注:下载时间较长(文件可能会下载不完整)

[root@server1 ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   633  100   633    0     0    141      0  0:00:04  0:00:04 --:--:--   141
 57 10.3M   57 6056k    0     0   8301      0  0:21:49  0:12:27  0:09:22 14003

[root@server1 ~]# cd /usr/local/bin/
[root@server1 bin]# ll
总用量 10616
-rw-r--r--. 1 root root 6202113 310 22:41 docker-compose

权限设置

[root@server1 bin]# docker-compose --version
-bash: /usr/local/bin/docker-compose: 权限不够

[root@server1 bin]# chmod 755 docker-compose

[root@server1 bin]# docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3

3.2、构建Nginx

  • 文件总览
[root@server1 ~]# yum -y install tree
[root@server1 ~]# cd compose_nginx/
[root@server1 compose_nginx]# tree .
.
├── docker-compose.yaml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.2.tar.gz
│   └── run.sh
└── wwwroot
    └── index.html

1、创建工作目录,将nginx软件包拷贝到该目录

[root@server1 ~]# mkdir compose_nginx
[root@server1 ~]# cd compose_nginx/

[root@server1 compose_nginx]# mkdir nginx
[root@server1 compose_nginx]# cd nginx/
[root@server1 nginx]# ll
总用量 960
-rw-r--r--. 1 root root 981687 818 2018 nginx-1.12.2.tar.gz

2、编写启动脚本

[root@server1 nginx]# vi run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

3、编写Dockerfile

[root@server1 nginx]# vi Dockerfile
FROM centos:7
MAINTAINER this is nginx image
RUN yum -y update
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=ng
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值