docker swarm入门
集群相关指令(manager才可以查看修改节点状态)docker swarm init
或者
docker swarm init --listen-addr ${MANAGER_IP}:${MANAGER_PORT}
查看集群的token
docker swarm join-token worker
或者
docker swarm join-token manager
工作节点添加到集群,根据不同的token,作为不同的模式去添加
docker swarm join --token xxxxxxxxxxxxxxxxxxxxxxxxxxx ${MANAGER_IP}:${MANAGER_PORT}
节点升级/降级
docker node promote/demote ${NODE_ID}
主动离开集群
docker swarm leave
docker swarm leave --force
从集群中删除节点
docker node rm ${NODE_ID}
docker node rm --force ${NODE_ID}
当节点不正常以后,手工删除节点
docker node update --availability drain ${NODE_ID}
查看节点
docker node ls
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
集群服务相关
在集群上创建抽象服务
docker service create --name redis --replicas 2 --publish 6379:6379 redis
global模式可以根据工作者节点的数目自动扩展service的副本数,不需要设置replicas
docker service create --name redis --mode global --publish 6379:6379 redis
查看集群服务列表
docker service ls
查看服务明细
docker service inspect --pretty myservice
查看服务运行在哪个节点
docker service ps myservice
动态横向扩展服务,以下扩展分片为3
docker service scale myservice=3
修改服务,参数非常多,这里贴个网络的例子
docker service update xxx --network-add xxxxx
docker service update xxx --network-rm xxxxx
删除集群服务
docker service rm myservice
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
overlay虚拟网络,这个是用来在集群内透明通信的玩意,强烈推荐,通过这个,把服务抽象化了
创建overlay网络
docker network create --driver overlay mynetwork
或者
docker network create --driver overlay --subnet 10.0.9.0/24 --opt encrypted mynetwork
创建基于虚拟网络的服务
docker service create --raplicas 3 --name my-web --network mynetwork nginx
再创建一个测试,用于两者互通测试
docker service create --name my-busybox --network mynetwork busybox sleep 3000
测试连通
打开busybox的shell
docker exec -it my-busybox.x.xxxxxxxxxxxxxxxxxxxxxxxxxxx /bin/sh
在容器内查看虚拟ip
nslookup my-web
容器内查看全部容器的ip
nslookup tasks.my-web
容器外查看虚拟ip
docker service inspect xxxxxx -f "{{ .Endpoint.VirtualIPs }}"
页:
[1]