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
Docker Swarm(二)常用命令的更多相关文章
- Docker基础和常用命令
Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
- docker 安装与常用命令与常用容器(containers)环境
注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...
- Docker系列之常用命令操作手册
目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...
- Docker三剑客之常用命令
一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...
- Docker安装和常用命令
Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...
- 【Docker】5. 常用命令—镜像命令
学习命令,官方文档千万别忘记了,不会的就到这里来查. 一.帮助命令 1.显示docker哪些命令 docker --help 另外,也可以查看具体命令的用法,比如我想知道命令docker images ...
- Docker 安装与常用命令
目录 Docker 安装 1)安装 2)启动 3)镜像加速器 Docker 常用命令 1)Docker 进程相关命令 2)Docker 镜像相关命令 docker search:查找镜像仓库中的镜像 ...
- Docker入门之常用命令
写在前面 细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没. 让我们一起来回顾一下Docker 是什么? 是一种虚拟化技术 能够将应用程序自动部署到容 ...
- docker swarm的常用操作
1. 说明 本文档针对docker swarm操作. 针对的系统是以一个本地的测试系统为例.其中机器信息如下,172.16.1.13作为docker swarm的管理机. 本地测试的机器列表信息: 主 ...
随机推荐
- 面试准备——计算机网络(http)
一.各种协议与HTTP协议之间的关系 二.URI(统一资源标识符) URI用字符串标识某一互联网资源. URI的格式: 协议方案名:指定访问资源时使用的协议类型. 登录信息(认证):可选,指定用户名和 ...
- Dynamics CRM调用选择用户弹窗
在开发Dynamics CRM的部分场景时我们会遇到一些需要去锁定用户的操作,所以就需要使用Javascript把用户的弹窗弹出来.具体做法如下 我们需要拼接一个弹出选择记录框的url Url格式:C ...
- JAVAEE_Servlet_14_HttpServletRequest接口以及常用方法(一)
HttpServletRequest接口 * javax.servlet.http.HttpServletRequest 接口 * 继承关系 HttpServletRequest---继承---> ...
- JAVAEE_02_BS/CS架构
BS/CS架构 系统构架分为? C/S: Client/Server B/S: Browser/Server B/S的优缺点? 优点: 1. 不需要安装特定的客户端软件,只需要浏览器. 2. 升级只需 ...
- 一次ssh不能登陆问题
看提示应该是进程数满了 ps -eLf | wc -l 查看当前进程数 [root@qc-app-16-63 containers]# ps -eLf | wc -l2625 查看允许最大进程数 s ...
- OOP-面向对象(一)
一图描述面向对象 类 - 相关参考 定义一个类 # 在定义类名的时候推荐使用大陀峰 class Car: pass # 推荐这么定义 class Car(): pass class Car(objec ...
- w1R3s靶机work_through
前言 这靶机挺简单的.虽然网友们有分享oscp向的靶机集,但是没有一个难度梯度,做起来就怪怪的. 打点 nmap -sP 192.168.218.0/24 发现主机IP 192.168.218.134 ...
- shellcode 开发
0x00 设置堆栈 栈顶指针按位与之后,将栈桢以16字节的大小对齐: push rbp ;store rbp original state mov rbp, rsp ;set stack base p ...
- 《机器学习Python实现_10_09_集成学习_bagging_stacking原理及实现》
介绍 前面对模型的组合主要用了两种方式: (1)一种是平均/投票: (2)另外一种是加权平均/投票: 所以,我们有时就会陷入纠结,是平均的好,还是加权的好,那如果是加权,权重又该如何分配的好?如果我们 ...
- hdu4995 (不错的小模拟)
题意: 输入n,m,k ,给你n个点,他们在一个一维坐标上,每个点有两个值,一个是坐标,另一个是价值,然后有m组操作,每次操作给一个坐标,意思就是把当前这个坐标的点距离他最近的k个点(相等 ...