zoukankan      html  css  js  c++  java
  • Docker Swarm(二)常用命令


    • # 管理配置文件
    • docker config
    •     # 查看已创建配置文件
    •     - docker config ls
    •     # 将已有配置文件添加到docker配置文件中
    •     - docker config create docker 配置文件名 本地配置文件

    •  # 管理swarm节点
    • docker node
    •     # 查看集群中的节点
    •     - docker node ls
    •     # 将manager角色降级为worker
    •     - docker node demote 主机名
    •     # 将worker角色升级为manager
    •     - docker node promote 主机名
    •     # 查看节点的详细信息,默认json格式
    •     - docker node inspect 主机名
    •           # 查看节点信息平铺格式
    •           - docker node inspect --pretty 主机名
    •     # 查看运行的一个或多个及节点任务数,默认当前节点
    •     - docker node ps
    •     # 从swarm中删除一个节点
    •     - docker node rm 主机名
    •     # 更新一个节点
    •     - docker node update
    •           # 对节点设置状态(“active”正常|“pause”暂停|“drain”排除自身work任务)
    •           - docker node update --availability

    •  # 管理敏感数据存储
    • docker secret

    • # 服务栈,栈的形式,一般作为编排使用,格式与docker compose相同。
    • docker stack
    •     # 通过.yml文件指令部署
    •     - docker stack deploy -c 文件名.yml 编排服务名
    •     # 查看编排服务
    •     - docker stack ls
    build
    cgroup_parent
    container_name
    devices
    dns
    dns_search
    tmpfs
    external_links
    links
    network_mode
    security_opt
    stop_signal
    sysctls
    userns_mode
    docker stack 不支持使用参数

    • # 作为集群的管理
    • docker swarm
    •     # 初始化一个swarm
    •     - docker swarm init
    •           # 指定初始化ip地址节点
    •           - docker swarm init --advertise-addr 管理端IP地址
    •           # 去除本地之外的所有管理器身份
    •           - docker swarm init --force-new-cluster
    •     # 将节点加入swarm集群,两种加入模式manager与worker
    •     - docker swarm join
    •           # 工作节点加入管理节点需要通过join-token认证
    •           - docker swarm join-token
    •           # 重新获取docker获取初始化命令
    •           - docker swarm join-token worker
    •     # 离开swarm
    •     - docker swarm leave
    •     # 对swarm集群更新配置
    •     - docker swarm update

    • # 服务管理
    • docker service
    •     # 创建一个服务
    •     - docker service create
    •           # 创建的副本数
    •           - docker service create --replicas 副本数
    •           # 指定容器名称
    •           - docker service create --name 名字
    •           # 每次容器与容器之间的更新时间间隔。
    •           - docker service create --update-delay s秒
    •           # 更新时同时并行更新数量,默认1
    •           - docker service create --update-parallelism 个数
    •           # 任务容器更新失败时的模式,(“pause”停止|”continue“继续),默认pause。
    •           - docker service create --update-failure-action 类型
    •           # 每次容器与容器之间的回滚时间间隔。
    •           - docker service create --rollback-monitor 20s
    •           # 回滚故障率如果小于百分比允许运行
    •           - docker service create --rollback-max-failure-ratio .数值(列“.2”为%20)
    •           # 添加网络
    •           - docker service create --network 网络名
    •           # 创建volume类型数据卷
    •           - docker service create --mount type=volume,src=volume名称,dst=容器目录
    •           # 创建bind读写目录挂载
    •           - docker service create --mount type=bind,src=宿主目录,dst=容器目录
    •           # 创建bind只读目录挂载
    •           - docker service create --mount type=bind,src=宿主目录,dst=容器目录,readonly
    •           # 创建dnsrr负载均衡模式
    •           - docker service create --endpoint-mode dnsrr 服务名
    •           # 创建docker配置文件到容器本地目录
    •           - docker service create --config source=docker配置文件,target=配置文件路径
    •           # 创建添加端口
    •           docker service create --publish 暴露端口:容器端口 服务名
    •     # 查看服务详细信息,默认json格式
    •     - docker service inspect
    •           # 查看服务信息平铺形式
    •           - docker service inspect --pretty 服务名
    •     # 查看服务内输出
    •     - docker service logs
    •     # 列出服务
    •     - docker service ls
    •     # 列出服务任务信息
    •     - docker service ps    
    •           # 查看服务启动信息
    •           - docker service ps 服务名
    •           # 过滤只运行的任务信息
    •           - docker service ps -f "desired-state=running" 服务名
    •     # 删除服务
    •     - docker service rm
    •     # 缩容扩容服务
    •     - docker service scale
    •           # 扩展服务容器副本数量
    •           - docker service scale 服务名=副本数
    •     # 更新服务相关配置
    •     - docker service update
    •           # 容器加入指令
    •           - docker service update --args “指令” 服务名
    •           # 更新服务容器版本
    •           - docker service update --image 更新版本 服务名         
    •          # 回滚服务容器版本
    •          - docker service update --rollback 回滚服务名
    •           # 添加容器网络
    •           - docker service update --network-add 网络名 服务名
    •           # 删除容器网络
    •           - docker service update --network-rm 网络名 服务名
    •           # 服务添加暴露端口
    •           - docker service update --publish-add 暴露端口:容器端口 服务名
    •           # 移除暴露端口
    •           - docker service update --publish-rm 暴露端口:容器端口 服务名
    •           # 修改负载均衡模式为dnsrr
    •           - docker service update --endpoint-mode dnsrr 服务名
    •           # 添加新的配置文件到容器内
    •           - docker service update --config-add 配置文件名称,target=/../容器内配置文件名 服务名
    ---更新配置文件----
    
    # 1创建配置文件
    docker config create nginx2_config nginx2.conf 
    # 2删除旧配置文件
    docker service update --config-rm ce_nginx_config 服务名
    # 3添加新配置文件到服务
    ocker service update --config-add src=nginx2_config,target=/etc/nginx/nginx.conf ce_nginx
    使用方法
    •           # 删除配置文件
    •           - docker service update --config-rm 配置文件名称 服务名
    •          # 强制重启服务
    •           - docker service update --force 服务名

    •    # 查看服务日志
    •    docker service ps --no-trunc {serviceName}

    ==========================下面简单梳理了一些日常运维中用到的Swarm相关命令=============================

    1) 初始化swarm manager并制定网卡地址
    # docker swarm init --advertise-addr 182.48.115.237
     
    2) 删除集群,强制退出需要加–force (针对manager节点). 到各个节点上执行退出集群的命令
    # docker node rm swarm-node1    
    # docker swarm leave --force      //manager节点退出集群,需要加--force
     
    3) 查看swarm worker的连接令牌
    # docker swarm join-token worker
     
    例如:
    [root@manager-node ~]# docker swarm init --advertise-addr 182.48.115.237
    Swarm initialized: current node (1gi8utvhu4rxy8oxar2g7h6gr) is now a manager.
      
    To add a worker to this swarm, run the following command:
      
        docker swarm join 
        --token SWMTKN-1-4roc8fx10cyfgj1w1td8m0pkyim08mve578wvl03eqcg5ll3ig-f0apd81qfdwv27rnx4a4y9jej 
        182.48.115.237:2377
      
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
     
    4) 加入docker swarm集群,作为worker节点
    利用上面执行结果中的命令放在其他节点上执行,则该节点加入到swarm集群中作为worker节点
    [root@node1 ~]# docker swarm join --token SWMTKN-1-4roc8fx10cyfgj1w1td8m0pkyim08mve578wvl03eqcg5ll3ig-f0apd81qfdwv27rnx4a4y9jej 182.48.115.237:2377
    This node joined a swarm as a worker.
     
    5) 查看swarm manager的连接令牌
    # docker swarm join-token manager
     
    例如:
    [root@swarm-manager-node ~]# docker swarm join-token manager
    To add a manager to this swarm, run the following command:
     
        docker swarm join 
        --token SWMTKN-1-075gaitl18z3v0p37sx7i5cmvzjjur0fbuixzp4tun0xh0cikd-0y8ttp5h0g54j10amn670w6su 
        172.16.60.220:2377
     
    6) 加入docker swarm集群,作为manager节点
    利用上面执行结果中的命令放在其他节点上执行,则该节点加入到swarm集群中作为manager管理节点,状态为reachable.
    [root@swarm-manager-node2 ~]# docker swarm join --token SWMTKN-1-075gaitl18z3v0p37sx7i5cmvzjjur0fbuixzp4tun0xh0cikd-0y8ttp5h0g54j10amn670w6su 172.16.60.220:2377
    This node joined a swarm as a manager.
     
    [root@swarm-manager-node2 ~]# docker node ls
    ID                                                HOSTNAME                  STATUS      AVAILABILITY  MANAGER STATUS
    rpbey5t1v14olke2mgtc430de     swarm-node2                 Ready        Active       
    u6gkfr4j19gq16ddyb76fxsl3       swarm-node1                 Ready        Active       
    vwbb0imil512a1le04bnkx98u *   swarm-manager-node    Ready       Active                      Leader
    ybjvaszg838upeqvvzswhq0tt       swarm-manager-node2  Ready       Active                      Reachable
     
    如果之前的leader状态的manager管理节点挂了后(假如systemctl stop docker, 然后再systemctl start docker),
    则新加入的manager节点状态由reachable变为leader, 之前的manager节点状态为unreachable.
    [root@swarm-manager-node2 ~]# docker node ls
    ID                                                HOSTNAME                  STATUS      AVAILABILITY  MANAGER STATUS
    rpbey5t1v14olke2mgtc430de     swarm-node2                 Ready        Active       
    u6gkfr4j19gq16ddyb76fxsl3       swarm-node1                 Ready        Active       
    vwbb0imil512a1le04bnkx98u *   swarm-manager-node    Ready       Active                      Unreachable
    ybjvaszg838upeqvvzswhq0tt       swarm-manager-node2  Ready       Active                      Leader
     
    7) 使旧令牌无效并生成新令牌
    # docker swarm join-token --rotate
     
    8) 查看集群中的节点
    # docker node ls
     
    9) 查看集群中节点信息
    # docker node inspect swarm-node1 --pretty
     
    10) 调度程序可以将任务分配给节点
    # docker node update --availability active swarm-node1
     
    11) 调度程序不向节点分配新任务,但是现有任务仍然保持运行
    # docker node update --availability pause swarm-node1
     
    12) 调度程序不会将新任务分配给节点。调度程序关闭任何现有任务并在可用节点上安排它们. 也就是线下节点,不参与任务分配.
    # docker node update --availability drain swarm-node1
     
    13) 添加节点标签
    # docker node update --label-add label1 --label-add bar=label2 swarm-node1
     
    14) 删除节点标签
    # docker node update --label-rm label1 swarm-node1
     
    15) 将worker节点升级为manager节点
    # docker node promote swarm-node1
     
    16) 将manager节点降级为worker节点
    # docker node demote swarm-manager-node
     
    17) 查看服务列表
    # docker service ls
     
    18) 查看服务的具体信息
    # docker service ps my-test
     
    19) 创建一个不定义name,不定义replicas的服务. (如下的nginx是docker的nginx镜像名称,不是服务名称)
    # docker service create nginx
     
    20) 创建一个指定name的服务
    # ocker service create --name my-nginx nginx
     
    21) 创建一个指定name、run cmd的服务
    # docker service create --name my-nginx nginx ping www.baidu.com
     
    22) 创建一个指定name、version、run cmd的服务
    # docker service create --name my-redis redis:3.0.6
    # docker service create --name my-nginx nginx:1.8 /bin/bash
     
    23) 创建一个指定name、port、replicas的服务
    # docker service create --name my-nginx --replicas 3 -p 80:80 nginx
     
    24) 为指定的服务更新一个端口
    # docker service update --publish-add 80:80 my-nginx
     
    25) 为指定的服务删除一个端口
    # docker service update --publish-rm 80:80 my-nginx
     
    26) 将redis:3.0.6更新至redis:3.0.7
    # docker service update --image redis:3.0.7 redis
     
    27) 配置运行环境,指定工作目录及环境变量
    # docker service create --name my-nginx --env MYVAR=myvalue --workdir /data/www --user my_user nginx ping www.baidu.com
     
    28) 创建一个my-nginx的服务
    # docker service create --name my-nginx nginx ping www.baidu.com
     
    29) 更新my-nginx服务的运行命令
    # docker service update --args "ping www.baidu.com" my-nginx
     
    30) 删除一个服务
    # docker service rm my-nginx
     
    31) 在每个群组节点上运行web服务
    # docker service create --name tomcat --mode global --publish mode=host,target=8080,published=8080 tomcat:latest
     
    32) 创建一个overlay网络
    # docker network create --driver overlay my-network
    # docker network create --driver overlay --subnet 10.10.10.0/24 --gateway 10.10.10.1 haha-network
     
    33) 创建服务并将网络添加至该服务
    # docker service create --name my-test --replicas 3 --network my-network redis
     
    34) 删除群组网络
    # docker service update --network-rm my-network my-test
     
    35) 更新群组网络
    # docker service update --network-add haha-network my-test
     
    36) 创建群组并配置cpu和内存
    # docker service create --name my_nginx --reserve-cpu 2 --reserve-memory 512m --replicas 3 nginx
     
    37) 更改所分配的cpu和内存
    # docker service update --reserve-cpu 1 --reserve-memory 256m my_nginx
     
    38) 创建服务时自定义的几个参数
    指定每次更新的容器数量
    --update-parallelism
     
    指定容器更新的间隔
    --update-delay
     
    定义容器启动后监控失败的持续时间
    --update-monitor
     
    定义容器失败的百分比
    --update-max-failure-ratio
     
    定义容器启动失败之后所执行的动作
    --update-failure-action
     
    比如:创建一个服务并运行3个副本,同步延迟10秒,10%任务失败则暂停
    # docker service create --name mysql_5_6_36 --replicas 3 --update-delay 10s --update-parallelism 1 --update-monitor 30s --update-failure-action pause --update-max-failure-ratio 0.1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
     
    39) 回滚至之前版本
    # docker service update --rollback mysql
     
    自动回滚
    如果服务部署失败,则每次回滚2个任务,监控20秒,回滚可接受失败率20%
    # docker service create --name redis --replicas 6 --rollback-parallelism 2 --rollback-monitor 20s --rollback-max-failure-ratio .2 redis:latest
     
    40) 创建服务并将目录挂在至container中
    # docker service create --name mysql --publish 3306:3306 --mount type=bind,src=/data/mysql,dst=/var/lib/mysql --replicas 3 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
     
    需要注意使用bind绑定宿主机目录会带来的风险
    - 绑定的主机路径必须存在于每个集群节点上,否则会有问题;
    - 调度程序可能会在任何时候重新安排运行服务容器,如果目标节点主机变得不健康或无法访问;
    - 主机绑定数据不可移植,当你绑定安装时,不能保证你的应用程序开发方式与生产中的运行方式相同;
     
    41) 添加swarm配置
    # echo "this is a mysql config" | docker config create mysql -
     
    42) 查看配置
    # docker config ls
     
    查看配置详细信息
    # docker config inspect mysql
     
    43) 删除配置
    # docker config rm mysql
     
    44) 添加配置
    # docker service update --config-add mysql mysql
     
    45) 删除配置
    # docker service update --config-rm mysql mysql
     
    46) 添加配置
    # docker config create kevinpage index.html
     
    47) 启动容器的同时添加配置(target如果报错,就使用dst或destination)
    # docker service create --name nginx --publish 80:80 --replicas 3 --config src=kevinpage,target=/usr/share/nginx/html/index.html nginx

    引用:https://www.cnblogs.com/xiangsikai/p/9935814.html

  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/12355736.html
Copyright © 2011-2022 走看看