docker-swarm 命令

拜拜、爱过 提交于 2019-12-02 00:23:46

管理配置文件

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 不支持使用参数


作为集群的管理

 # 初始化一个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 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 create --replicas 1 --name hello busybox

查看服务
docker service ls

服务并没有启动
在hello服务中busybox只是一个基础镜像,并没有一个持续运行的任务,在hello服务中busybox只是一个基础镜像,并没有一个持续运行的任务
更新:
docker service update --args "ping www.baidu.com" hello

过滤不正常的状态
docker service ps -f "desired-state=running" hello

服务扩容(缩容)
docker service scale hello=4

工作节点排除manager,manager只作为管理节点

docker node update --availability drain manager

排除manager 后,其上的服务会转移至其他节点


##滚动更新服务
升级服务的镜像版本

docker service create > --replicas 3 > --name redis > --update-delay 10s > redis:3.0.6

update-delay 10s :每个容器依次更新,间隔10s

滚动更新:
docker service update --image redis:3.0.7 redis

--image 指定版本

查看更新记录 docker service ps redis

查看配置信息:
dockers service inspect --pretty redis


##服务更新和回滚
1,设置策略

[root@manager ~]# docker service create --name my-web --replicas 10 --update-delay 10s --update-parallelism 2 --update-failure-action continue --rollback-parallelism 2 --rollback-monitor 20s --rollback-max-failure-ratio 0.2 nginx:1.12.1

--update-parallelism 2 : 每次允许两个服务一起更新

--update-failure-action continue : 更新失败后的动作是继续

--rollback-parallelism 2 : 回滚时允许两个一起

--rollback-monitor 20s :回滚监控时间20s

--rollback-max-failure-ratio 0.2 : 回滚失败率20%

如果执行后查看状态不是设置的,可以在update一下,将服务状态设置为自己想要的

docker service update --rollback-monitor 20s my-web

docker service update --rollback-max-failure-ratio 0.2 my-web

有两个地方设置数值没有成功,手动设置

查看状态
docker service inspect --pretty my-web
docker service ps name

2,服务更新

docker service update --image nginx:1.13.5 my-web

docker service ps name

3,回滚 失败会回滚

docker service update --rollback my-web

```

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!