• # 管理配置文件
  • 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

Docker Swarm(二)常用命令的更多相关文章

  1. Docker基础和常用命令

    Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  2. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  3. docker 安装与常用命令与常用容器(containers)环境

    注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...

  4. Docker系列之常用命令操作手册

    目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...

  5. Docker三剑客之常用命令

    一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...

  6. Docker安装和常用命令

    Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...

  7. 【Docker】5. 常用命令—镜像命令

    学习命令,官方文档千万别忘记了,不会的就到这里来查. 一.帮助命令 1.显示docker哪些命令 docker --help 另外,也可以查看具体命令的用法,比如我想知道命令docker images ...

  8. Docker 安装与常用命令

    目录 Docker 安装 1)安装 2)启动 3)镜像加速器 Docker 常用命令 1)Docker 进程相关命令 2)Docker 镜像相关命令 docker search:查找镜像仓库中的镜像 ...

  9. Docker入门之常用命令

    写在前面 细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没. 让我们一起来回顾一下Docker 是什么? 是一种虚拟化技术 能够将应用程序自动部署到容 ...

  10. docker swarm的常用操作

    1. 说明 本文档针对docker swarm操作. 针对的系统是以一个本地的测试系统为例.其中机器信息如下,172.16.1.13作为docker swarm的管理机. 本地测试的机器列表信息: 主 ...

随机推荐

  1. golang 入门之环境搭建

    [安装运行时] 直接上官网下载运行时安装即可:golang 官网 根据自己操作系统选择 golang 运行时版本,例如windows 当然我们也可以直接选择下面的稳定版本进行下载 下载安装后,安装程序 ...

  2. 电梯也能无为而治——oo第二单元作业总结

    oo第二单元作业总结 一.设计策略与质量分析 第一次作业 设计策略 在第一次作业之前,我首先确定了生产者--消费者模式的大体架构,即由输入线程(可与主线程合并)充当生产者,电梯线程充当消费者,二者不直 ...

  3. JRebel激活

    邮箱随便填,URL为 https://jrebel.qekang.com/ 加上UUID,比如 https://jrebel.qekang.com/2c0c926f-5664-4d0e-afe2-60 ...

  4. 简单的介绍一下Java设计模式:解释器模式

    目录 定义 意图 主要解决问题 优缺点 结构 示例 适用情况 定义 解释器模式是类的行为型模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,客户端可以使用这个解释器来 ...

  5. Ducci Sequence UVA - 1594

      A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1,a2,···,an ...

  6. 你已经用上 5G 网络了吗?

    随着各大手机厂商陆续推出 5G 手机,智能手机全面迎来 5G 浪潮.可能有人会发问:如此推崇 5G,5G 能为我们带来什么,我们的生活又会因此而改变多大呢? 什么是 5G? 简单地说,5G 就是第五代 ...

  7. 1083 List Grades

    Given a list of N student records with name, ID and grade. You are supposed to sort the records with ...

  8. 大数翻倍法求解CRT

    目录 正文 引入 大数翻倍法 复杂度证明 大数翻倍法的优势 最后的最后:上代码! 注:做法和思路是 zhx 在一次讲课中提出的,如有侵权,请联系作者删除 其实别的题解也有提到过暴力做法,但这里将会给出 ...

  9. PHP--date转成时间戳,time()获取的是秒数

    date("Y-m-d H:i:s");  //如果存成datetime型在MYSQL中 必须用这种格式 实现功能:获取某个日期的时间戳,或获取某个时间的时间戳.strtotime ...

  10. 【面试题2020-03-30】面试官:对并发熟悉吗?说说Synchronized及实现原理

    一.Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法. Synchronized的作用主要有三个: 1.确保线程互斥的访问同 ...