初学docker swarm集群

发表于 LINUX 分类,标签:

初始化swarm集群

docker swarm init



docker swarm join-token <Token> <Manager-IP>

其中Token分角色(manager和worker)


找回Token

docker swarm join-token manager

docker swarm join-token worker


子节点退出当前集群

docker swarm leave


节点集群管理

docker node ls

docker node inspect

docker node ps


节点角色转换

1.将worker转为manager

docker node promote XXX

2.将manager转为worker

docker node demote XXX


以nginx镜像创建一个服务

docker service create --detach\

--name web \

--publish 8080:80 \

--replicas=3 \

nginx:1.13.1


创建一个网络

docker network create demo --driver overlay


docker service create --help


docker service inspect

docker service ls

docker service rm 


一次性查看所有的Task的状态信息

docker service ls -q | xargs -n1 docker service ps


docker service logs 


docker service scale web=5

docker service update web --replicas 5


滚动升级

docker service update web --image ningx:1.13.2 \

--update-parallelism 1 --update-delay 3s


滚动升级过程中可以从另外一个端口查看task变化过程

watch 'docker service ps web | grep Running'




docker-compose编排开始

##############################################################################



服务编排

version: "3"

services:

  redis:

    image: redis:3.2.5

    networks:

      - demo-net

  app:

    image: flin/page-hit-counter:v1

    ports:

      - 5000:5000

    depends_on:

      - redis

    networks:

      - demo-net

networks:

  demo-net:

    external: false






使用如下命令启动

docker-compose up -d


使用如下命令访问,会看到不断递增的访问计数

curl localhost:5000


使用docker-compos命令可以批量地管理这些服务

docker-compose stop



docker-compose有如下命令

up down create start stop restart kill rm pause unpause 

images ps logs events exec pull push build run bundle 

config prot scale top 






services:

  webapp:

    image: webapp

    deploy:

      replicas: 4           # 启动4个副本

      update_config:        # 升级时每次替换2个容器,间隔10s

        parallelism: 2

        delay: 10s

      restart_policy:           # 出错退出时自动重启,最多3此,间隔5秒

        condition: on-failure

        delay: 5s

        max_attempts: 3

      resources:                #限制最大和最小的资源使用量

        limits:

          cpus: '0.1'

          memory: 300M

        reservations:

          cpus: '0.01'

          memory: 100M




services:

  webapp:

    image: webapp

    volumes:                              # 挂载webapp_volumn存储卷

      - webapp_volumn: /opt/app/static

    ports:                                # 指定端口映射

      - "3000/udp"

      - "8000:8000"

    networks:                             # 假如webapp_network网络

      - webapp_network

    configs:                              # 挂载webapp_config外置配置

      - webapp_config

    secrets:                              # 挂载webapp_secret密文

      - webapp_secret







services:

  db:

    image: postgres

    volumes:                              # 挂载 data 存储卷

      - data:/var/lib/postgresql/data

    volumes:

      data:                               # 名称为data的存储卷描述

        driver: local

        external: false






services:

  app:

    build: ./app

    networks:

      - backend                 # 假如backend网络

networks:

  backend:                      # 名称为 backend 网络的描述

    driver: bridge

    external: false





services:

  app:

    build: ./app

    configs:

      - init_cf            # 挂载 init_cf的外置配置

configs:

  init_cf:

    file: ./init.cf

    external: false





services:

  app:

    build: ./app

    secrets:

      - app_passwd

secrets:

  app_passwd:

    file: ./secret_passwd

    external: false





docker-compose -f /PATH/TO/MY-COMPOSE-FILE.yaml up -d


可以将运行环境配置或者差异性配置剥离出来,然后指定多个配置文件执行

docker-compose -f /PATH/TO/MY-COMPOSE-FILE.yaml -f docker-compose-dev.yaml up -d




如果服务有调整或者新加服务,执行重新执行docker-compose up -d即可


docker-compose编排结束

##############################################################################





docker stack 应用栈编排开始

##############################################################################

version: "3.3"

services:

  redis:

    image: redis:3.2.5-alpine

    networks:

      - demo-net

  app:

    image: flin/page-hit-counter:v1

    ports:

      - 5000:5000

    depends_on:

      - redis

    networks:

      - demo-net

    deploy: 

      replicas: 2

networks:

  demo-net:

    driver: overlay

    external: false



docker stack deploy -c docker-compose.yml app

只能在docker swarm集群模式执行


docker stack ls


docker stack services 

docker stack ps


如果服务升级,只需要修改docker-compose.yml文件,然后重新执行

docker stack deploy -c docker-compose.yml app


删除应用栈

docker stack rm APP


删除服务

docker service rm SERVICE


界面项目

portainer


docker run -d \

  --name portainer \

  --restart always \

  -p 9000:9000 \

  -v /var/run/docker.sock:/var/run/docker.sock \

  -v /opt/portainer:/data \

  portainer/portainer




以服务的方式部署

docker service create \

  --detach \

  --name portainer \

  --publish 9000:9000 \

  --constraint 'node.role == manager' \

  --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \

  --mount type=bind,src=/opt/portainer,dst=/data \

  portainer/portainer













0 篇评论

发表我的评论