zoukankan      html  css  js  c++  java
  • docker/docker swarm学习

    docker好像越来越流行了,容器化就类似于框架的感觉,封装的越来越多,屏蔽了细节。

    docker

    docker按层次有这几个层:

    • stack
      • 栈,代表一个功能整体,比如提供一个网站服务。它可以包含多个service
    • service
      • 服务,代表一个单一功能,多个单一功能,整合成为一个完成功能。每个service包含多个container
    • container/task
      • 我的理解这两个概念其实是对等的,当然我的理解可能有误
      • service可以有多个实例,每一个container代表service的一个实例,这是容器化的一个显著特点,请求可以在各个实例间均衡负载

    docker 使用的通常流程:

    1. Docker镜像制作
    2. 创建Dockerfile
    3. docker build: 根据Dockerfile生成docker镜像
    4. docker push: 将docker镜像推送到镜像仓库,供其他主机或之后使用
    5. 根据镜像,搭建应用
    6. 生成docker composeyml文件,描述stack包含的服务
    7. docker stack deploy部署应用
    8. 镜像或者容器数量有更新时,通过docker stack deploy更新部署

    docker swarm

    docker swarm与kubernetes对应,用于统一管理节点。
    单独的一个stack可以在一台机器上运行,而如果想做高可用,就离不了多台机器部署,同时服务,这时可以用docker swarm。

    docker swarm的节点分为manager节点和worker节点

    swarm 初始化

    • manager节点管理整个swarm,管理命令仅能在manager节点运行。
    • workder节点加入manager节点后,由manager节点管控

    docker swarm的使用其实与前面docker使用的流程类似。使用docker swarm前,首先在manager节点电脑上运行

    docker swarm init --advertise-addr {url}
    

    其中url是加入服务广播节点,我用的阿里云服务器测试的,如果不指定,会默认成私有ip,从而其他服务器无法加入。

    在执行初始化后,控制台会给出提示命令,在worker节点的机器上,输入该命令,就能加入这个swarm了,类似如下格式:

    docker swarm join xxxxxxxxxxxxxxx
    

    部署stack

    初始化swarm后,其实后面的操作和第一部分docker操作一样,deploy服务即可。

    所不同的是,未启用swarm时,container只在本机创建,而启用swarm后,container会自动分配在不同的主机中创建。
    当访问服务时,docker swarm会自动在各个container以及节点间进行负载。

    docker 相关管理命令

    • docker service ls
    • docker stack ls
    • docker service ps {service_name}
    • docker stack ps {stack_name}
    • docker leave : worker节点退出swarm
    • docker leave --force: manager节点需要指定force选项退出

    其他

    注意docker使用了4789 UDP端口做负载均衡,7946 TCP/UDP端口做节点发现服务。一般云主机供应商防火墙会组织这些端口,想要正常负载的话,需要在防火墙中打开。

    阿里云夸区域的主机,私有ip不通,所以注意worker和manager节点都要通过--adevertise-addr指定主机的公网ip才行

  • 相关阅读:
    《HeadFirst设计模式》第三章-装饰者模式-读书笔记
    《HeadFirst设计模式》第五章单件模式-读书笔记
    《HeadFirst设计模式》第六章命令模式-读书笔记
    《HeadFirst设计模式》第二章观察者模式-读书笔记
    《HeadFirst设计模式》第一章策略模式-读书笔记
    python学习目录
    使用socket实现的ftp文件传输服务器
    selenium之 驱动环境配置chrome、firefox、IE
    selenium获取动态网页信息(某东)-具体配置信息
    9.Redis Cluster初识
  • 原文地址:https://www.cnblogs.com/mosakashaka/p/12608640.html
Copyright © 2011-2022 走看看