Docker Swarm 简介
Docker Swarm 是一个 Dockerized 化的分布式应用程序的本地集群,它是在Machine所提供的功能的基础上优化主机资源的利用率和容错服务。具体来说,Docker Swarm支持用户创建可运行Docker Daemon的主机资源池,然后在资源池中运行Docker容器。Docker Swarm可以管理工作负载并维护集群状态。
除了资源优化,Docker Swarm可以保证应用的高可用性和容错性。Docker Swarm会不断的检查Docker Daemon所在主机的健康状态。当某个主机不可用时,Swarm就会将容器迁移到新的主机上。
Docker Swarm的亮点之一是它可以在应用的生命周期内扩展,也就是说当应用从一个主机扩展到2个、20个或者200个的时候,用户可以保证接口的一致性。
同样,和Machine一样,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
docker stack 不支持使用参数
build
cgroup_parent
container_name
devices
dns
dns_search
tmpfs
external_links
links
network_mode
security_opt
stop_signal
sysctls
userns_mode
作为集群的管理
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 Swarm最后更新:2024-1-24