Docker进阶篇教程,docker-compose, docker swarm, 弹性、扩缩容

1. 简介

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 安装Compose

官网地址:Install Compose on Linux systems
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. compose初体验

官网地址: Get started with Docker Compose
在这里插入图片描述

第 1 步:设置

  1. 为项目创建一个目录:
 mkdir composetest
 cd composetest
  1. 项目目录中创建一个名为app.py的文件
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)
  1. 项目目录中创建另一个文件requirements.txt
flask
redis

第 2 步:创建一个 Dockerfile

创建一个名为Dockerfile并粘贴以下内容的文件:

# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

在这里插入图片描述

第 3 步:在 Compose 文件中定义服务

docker-compose.yml

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

这个 Compose 文件定义了两个服务:web和redis.
在这里插入图片描述

第 4 步: Build and run your app with Compose

在这里插入图片描述

查看服务

在这里插入图片描述

查看镜像

在这里插入图片描述

服务命名规则

因为当前不是集群,所以尚没有服务的概念:
在这里插入图片描述
在这里插入图片描述

docker network ls 查看网络

在这里插入图片描述
在这里插入图片描述可以发现它是通过域名找到Redis服务的,更说明了他们是在同一个网络的
在这里插入图片描述
实际项目中,当前Redis服务ip为172.27.0.2,如果该服务挂了,然后我们重新又拉起了一个redis服务,ip变成了172.27.0.8,如果写死ip根据ip找redis服务,那么由于ip发生变化将会导致redis服务不可用了
而现在我们可以看到Name是服务名称 redis_1, 即使我们重新启了一个服务,它还是能够连接到的,这就是好处! 保证了高可用!

docker-compose down 停掉服务

在这里插入图片描述

docker-compose 小结

在这里插入图片描述

Docker 小结

在这里插入图片描述

4. compose yaml 编写规则

官网地址: Compose file

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

掌握方法:
在这里插入图片描述
官网地址:Compose Specification

5. 开源博客项目 wordpress快速运行

参考官网: Compose and WordPress

在这里插入图片描述
docker-compose.yml
在这里插入图片描述

docker-compose up -d         #后台启动

在这里插入图片描述

6. docker-compose启动微服务项目实战

  • 编写微服务项目计数器
  • dockerfile构建镜像
  • docker-compose.yaml编排项目
  • 丢到服务器,docker-compose up

6.1 创建springboot项目

在这里插入图片描述
在这里插入图片描述

6.2 编写dockerfile

通过dockerfile构建镜像

在这里插入图片描述

6.3 编写docker-compose.yml

在这里插入图片描述

6.4 项目打包

在这里插入图片描述

6.5 上传所需文件至服务器

在这里插入图片描述

6.6 docker-compose一键启动

重新构建:

docker-compose up --build

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
最后:

docker-compose --help

6.7 总结

在这里插入图片描述

7. Docker Swarm

官网地址: How nodes work

7.1 购买服务器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 4台机器安装docker

在这里插入图片描述

7.3 工作模式

官网地址: How nodes work
管理节点与工作节点

  • 管理节点负责管理工作节点
  • 管理节点之间可以互通,互相查看是否存活(2个节点无意义,一般至少3个)

在这里插入图片描述

7.4 搭建集群

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 下面把docker-4作为主节点加入集群:
    在这里插入图片描述
    在这里插入图片描述
    再次查看节点:
    在这里插入图片描述
    小结:

在这里插入图片描述

8. Raft协议

  • 双主双从:其中一个主节点挂了,另一个页不能用了
  • Raft协议:保证大多数节点存活才可以用,只要>1台, 集群至少3台

8.1 双主双从宕机测试

将第一个主节点停掉:
在这里插入图片描述
下图中可以发现,另一个主节点页挂了:
在这里插入图片描述
重新启动docker, 查看节点下图中可以发现,新的Leader产生了,原来的老大是3Z,现在变成了2Z
在这里插入图片描述

8.2 节点离开集群

在这里插入图片描述
在这里插入图片描述

8.3 三主测试

先生成一个令牌:
在这里插入图片描述
下面将docker3也加到管理节点:
在这里插入图片描述

停止docker1:
在这里插入图片描述
在这里插入图片描述
然后分别在主节点docker3和主节点docker4里面执行 docker node ls 发现是可以正常执行这条命令的,说明他们都还正常存活

下面再停掉一个主节点: docker3, 然后在docker4上查看节点信息:
在这里插入图片描述
可以发现docker4已经不能正常使用了,即使它是主节点

Raft一致性算法协议:(集群)至少保证有3个主节点,有一个挂了没关系,剩余俩可以保证可用,但要是有2个挂了,第三个是不能用的
在这里插入图片描述

9. 体会弹性、扩缩容

以后告别docker run , 容器只是玩具,脱离了编排,它就没有任何意义了!

先把集群恢复,启动起来:
在这里插入图片描述

详见下一篇: Docker进阶篇教程 docker swarm弹性、动态扩缩容

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值