前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker stack编排你的容器集群

使用docker stack编排你的容器集群

作者头像
姜同学
发布2022-10-27 17:06:25
5440
发布2022-10-27 17:06:25
举报
文章被收录于专栏:姜同学姜同学

为什么要使用Docker Swarm(Docker集群)

当你没有刚刚学习Docker的时候有没有想过,docker容器是隔离滴,那么网络自然也是隔离滴喽,网络都隔离喽,容器是怎么通信的呢,在原始的Docker版本呢编写Dockerfile时可以使用link关键字指出要通信的容器,或者在docker run的时候通过–link指定要通信的容器,不过Docker官方都认为这个关键字有点不太好用所以过时了~再后来呀我们可以使用Docker network create进行自定义网络,容器想要通信的话可以使用network网络类型直接使用本机网络运行容器,不过这个同一个镜像在一台宿主机就只能运行一个容器喽,容器最重要的隔离特性就没有意义了~但是不要慌我们还可以使用Docker swarm提供的overlay网络类型,使用起来也是Very的easy呀~

初始化Docker Swarm

代码语言:javascript
复制
#初始化docker swarm
docker swarm init --advertise-addr 本机IP

初始化之后,你的主机就是一个Docker集群的管理节点啦,虽然这个集群只有你这么一个节点

代码语言:javascript
复制
#创建overlay网络
docker network create -d overlay alibaba-overlay(自定义的网络名称哦)

加入Docker Swarm

代码语言:javascript
复制
#在管理节点获取加入集群的token
docker swarm join-token worker

然后将控制台输出的命令在要加入的节点上执行以下就加入啦~

Docker stack编排Docker swarm

在Docker compose的v3版本之后Docker推出了Docker stack,所以你可以把docker stack当作Docker compose的进阶版啦~

docker-compose.yml

代码语言:javascript
复制
version: "3.0"
services:
  cloud-consumer:
    image: cloud-consumer:v0.1
    container_name: cloud-consumer
    ports:
      - "83:83"
    volumes:
      - /docker_volumes/cloud-consumer:/var/log
    environment:
      active: test
    networks:
      - alibaba-overlay
    depends_on:
      - cloud-provider9001
      - cloud-provider9002
    deploy:
      replicas: 
      update_config:
        parallelism: 
        delay: 10s
      restart_policy:
        condition: on-failure
  cloud-provider9001:
    image: cloud-provider9001:v0.1
    container_name: cloud-provider9001
    ports:
      - "9001:9001"
    volumes:
      - /docker_volumes/cloud-provider9001:/var/log
    environment:
      active: test
    networks:
      - alibaba-overlay
    deploy:
      replicas: 
      update_config:
        parallelism: 
        delay: 10s
      restart_policy:
        condition: on-failure
  cloud-provider9002:
    image: cloud-provider9001:v0.1
    container_name: cloud-provider9002
    ports:
      - "9002:9001"
    volumes:
      - /docker_volumes/cloud-provider9002:/var/log
    environment:
      active: test
    networks:
      - alibaba-overlay
    deploy:
      replicas: 
      update_config:
        parallelism: 
        delay: 10s
      restart_policy:
        condition: on-failure
networks:
  alibaba-overlay:
   external: true

对比上一篇的docker-compose.yml文件想必你已经看出来来了区别,没错就是多了docker compose v3语法中的deploy关键字,deploy可以指定部署几个分片,更新策略,失败了如何重启等等~。

启动docker stack

启动当然也是一行命令就直接启动了~

代码语言:javascript
复制
# docker stack deploy -c 配置文件 自定义stack名称
docker stack deploy -c docker-compose.yml alibaba-service
https://www.hualigs.cn/image/60f2a045d2c39.jpg
https://www.hualigs.cn/image/60f2a045d2c39.jpg
https://www.hualigs.cn/image/60f2a2c5449bf.jpg
https://www.hualigs.cn/image/60f2a2c5449bf.jpg

额有点累了剩下的查看stack以及service的命令不想写了~

彩蛋命令

/sbin/ip route|awk ‘/src/ { print $9 }’ | grep 172

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-06T,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用Docker Swarm(Docker集群)
  • 初始化Docker Swarm
  • 加入Docker Swarm
  • Docker stack编排Docker swarm
    • docker-compose.yml
    • 启动docker stack
    • 彩蛋命令
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档