文章目录

  • Docker Compose搭建consul群集环境
    • 认识Docker Compose
    • IConsul
    • Docker Compose容器编排
    • Dasker Compose配置常用字段
    • Bosker Compose常用命令
    • Compose命令说明
  • Docker四种网络模式
    • 案例概述
    • 指定Docker地址
  • 部署compose群集

Docker Compose搭建consul群集环境

认识Docker Compose

  • Docker Compose的前身是Fig,
    它是一个定义及运行多个Docker
    容器的工具
  • 使用Docker Compose不再需要
    使用Shell脚本来启动容器
  • Docker Compose非常适合组合
    使用多个容器进行开发的场景

IConsul

  • IConsul是HashiCorp公司推出的开源工具,用于实现分布
    式系统的服务发现与配置
  • Consul的特性
    Hashitorp
    ●支持健康检查,允许存储键值对
    ●基于Golong语言,可移植性强
    ●支持ACL访问控制
  • 与Docker等轻量级容器可无缝配合

Docker Compose容器编排

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

  • 不支持制表符tab键缩进,需要使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如冒号、逗号、横杆
  • 用#号注释
  • 如果包含特殊字符用单引号引起来
  • 布尔值必须用引号括起来

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

Bosker 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指定项目名称,默认使用目录
    名称

Docker四种网络模式

host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口.

Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。

None:该模式关闭了容器的网络功能。

Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个dockero虚拟网桥,通过dockero网桥以及lptables nat表配置与宿主机通信。


**

案例概述

创鑫公司提出一个新需求,使用Docker将Consul、
Consul Template、Registrator和Nginx组装成一个
值得信任且可扩展的服务框架,可在这个框架中添加和
移除服务,不需要重写任何配置,也不需要重启任何服
务,一切都能正常运行

指定Docker地址

桥接

docker run -itd --name test --network bridge --ip 172.17.0.10 centos:7 /bin/bash
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
75c0f431ea72        centos:7            "/bin/bash"         10 seconds ago      Created                                 test

使用brige无法支持指定ip

使用brige无法支持指定ip

我们用一下方法

方法一

[root@localhost ~]# docker network create --subnet=172.18.0.0/24 mynetwork

ifconfig查看

br-f1c03a82b4dd: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.18.0.1  netmask 255.255.255.0  broadcast 172.18.0.255

方法二

[root@localhost ~]# docker run -itd --name test --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash
查看时up状态
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
042913086b1e        centos:7            "/bin/bash"         37 seconds ago      Up 35 seconds  

进入docker容器

[root@localhost ~]# docker exec -it 042913086b1e /bin/bash

下载一下ifcong

[root@042913086b1e /]# yum -y install net-tools

可以看到已经创建ip(和我们配置的地址一样)

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.18.0.10  netmask 255.255.255.0  broadcast 172.18.0.255

部署compose群集

导入docker-compose 模板文件

[root@localhost ~]# chmod +x docker-compose
[root@localhost ~]# cp -p docker-compose /usr/local/bin/
创建编排nginx服务

创建编排nginx服务

[root@localhost ~]# mkdir compose_nginx
[root@localhost ~]# cd compose_nginx/
[root@localhost compose_nginx]# mkdir nginx
[root@localhost compose_nginx]# cd nginx/
[root@localhost nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

创建启动脚本

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

配置yml

cd /root/compose_nginx/
[root@localhost compose_nginx]# vim docker-compose.yml
version: '3'
services: nginx: hostname: nginxbuild: context: ./nginxdockerfile: Dockerfileports: - 1216:80- 1217:443networks: - yunvolumes: - ./wwwroot:/usr/local/nginx/html
networks: yun: 

开启服务

[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d

编写网页

[root@localhost compose_nginx]# cd wwwroot/
[root@localhost wwwroot]# vim index.html
<h1>this is test web </h1>

树形结构查看

[root@localhost wwwroot]# yum install -y tree[root@localhost compose_nginx]#  tree ./
./
├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.0.tar.gz
│   └── run.sh
└── wwwroot└── index.html

查看端口

CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
acd31d303623        compose_nginx_nginx   "/run.sh"           2 minutes ago       Up 2 minutes        0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)相关推荐

  1. 修正《用Docker快速搭建Go开发环境》文章中的一处错误

    上周写的文章<五分钟用Docker快速搭建Go开发环境>,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了.今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处 ...

  2. docker配置python环境_PyCharm使用Docker镜像搭建Python开发环境

    在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装.本 ...

  3. Docker的四种网络模式和相关网络命令等操作

    Docker网络模式 一.实现原理 二.Docker四种网络模式 三.Docker命令 1.查看网络列表 2.自定义网络固定IP 3.暴露端口 4.在宿主机环境执行容器内命令 5.怎么把宿主机的文件传 ...

  4. Docker网络资源详解 ---(四种网络模式)

    文章目录 前言 一:Dcker网络资源详解 简单云平台生态环境图 普通单节点 桥接图 1.1:网络资源详解:Docker0网卡与四种网络模式 二 . Docker0网卡的解释 1. host模式 2. ...

  5. Docker的四种网络模式

    docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式: bridge模式:使用–net =bridge指定,默认设置: host模式:使用– ...

  6. docker容器的四种网络模式

    容器的四种网络模式 docker容器的四种网络模式:bridge 桥接模式.host 模式.container 模式和 none 模式 启动容器时可以使用 –net 参数指定,默认是桥接模式. 以下是 ...

  7. Docker四种网络模式

    四种网络模式 host模式 使用docker run时使用–net=host指定 Docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip. [root@localhost ~ ...

  8. 5、Docker 的四种网络模式

    5.1 Docker 的四种网络模式 网络模式 网络配置 说明 host(开放式网络模式) –network host 容器和宿主机共享 Network namespace container(联合挂 ...

  9. docker容器没有apt_使用Docker快速搭建Rails开发环境

    引言 Docker with rails 学习 Ruby On Rails 开发的同学经常会遇到因为电脑系统环境不同,同样的程序在自己这边跑起来没问题,给了其他人之后就是各种依赖或者环境问题,尤其是在 ...

最新文章

  1. UnicodeEncodeError\: gbk codec cant encode character \\xa1 in position 9699的解决办法
  2. 大脑模拟AI学习策略,这项逼近反向传播的研究登上《自然-神经科学》
  3. 经验分享:服务器托管必用的10大工具
  4. IDEA中双击两下shift全局搜索怎样取消和修改
  5. java 消息推送_hanbo-push分布式消息推送、IM服务
  6. SAP Spartacus table里显示较长数据时自动显示省略号的设置
  7. C#调用Web Service时的身份验证
  8. 玩转Google开源C++单元测试框架Google Test系列
  9. c语言程序错误提示一个找不到,C语言编辑程序出现错误提示.doc
  10. GO语言的进阶之路-Golang高级数据结构定义
  11. 阿里天猫亿级浏览型网站静态化架构演变
  12. (凭什么断点要放入堆栈?)微机学习:第八课
  13. 人工智能知识全面讲解:最简单的神经元模型
  14. liunx是相关总结
  15. Vue中的this.$store.state.xx.xx
  16. [AcWing]844. 走迷宫(C++实现)bfs的思想
  17. 用C语言输出当前文件夹中所有的文件名opendir
  18. skype EWS 信息;;EWS 不可用,正在重试连接;
  19. 显示器要申请BS 476-7 怎么送样?跟显示屏一样吗
  20. ABB机器人学习笔记(十)-ABB机器人常用指令详解(2)

热门文章

  1. IBC+Palette 实现屏幕内容编码优化
  2. 数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构
  3. 轻松 Flutter 入门,秒变大前端
  4. 沙龙报名 | 数据库技术探索及行业应用
  5. nginx日志配置指令详解
  6. 基于TensorFlow开发人脸识别
  7. mysql添加用户,设置权限,回收权限,删除用户详解
  8. 异常处理——Another app is currently holding the yum lock
  9. leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)
  10. leetcode 834. Sum of Distances in Tree | 834. 树中距离之和(树形DP)