赞
踩
docker swarm是docker 自带的服务编排工具,可以简单实现多台主机的docker容器集中管理,较k8s使用更简单。Swarm 集群中每台 主机称为一个节点。其中主动初始化一个 Swarm 集群的节点称为管理节点leader(Manager leader),加入一个Swarm 集群的节点称为工作节点(Worker Node)。工作节点是任务执行节点,管理节点将任务下发至工作节点执行。管理节点默认也作为工作节点。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,节点重启后服务可自动恢复。整体架构图:
2.1初始化集群
选择一个节点执行docker swarm init --advertise-addr 192.168.203.134,成为manager leader;其它主机要加入该集群只需要执行leader节点提示的命令
2.2集群管理
节点列表:docker swarm node ls
过滤查询:docker node ls --filter id=74 或docker node ls -f id=74,根据节点ID/name等,根据自定义label过滤
查看节点:docker node inspect 节点ID/name
退出集群:docker swarm leave --force
提升节点角色:docker node promote 节点ID/name,只是有机会成为manger leader,提升后便能执行管理节点命令
修改节点角色(包括提升/较低角色):docker node update 节点ID/name --role=worker
单个节点服务列表查看(每个节点看到的不一样):docker node ps ;
服务列表查看(每个节点看到的一样): docker service ls ;
删除服务:docker service rm ID/name
注:因为只有两个节点,其中一个节点会部署两个mynginx容器,命名为mynginx.1,mynginx.2,myngin.3;访问curl 192.168.203.134:8888或curl 192.168.203.135:8888
docker service logs -f --tail 111 mynginx 日志查看,随便哪个节点看到都是一样的。
集群通信网络查看docker service inspect mynginx
4.1.首先需要指定共用的overlay网络(创建:docker network create --driver overlay mynetwork 查看:docker network ls),
4.2 mynginx与registry服务都是有自定义网络
docker service create --replicas 2 --name registry --network=mynetwork registry
docker service create --replicas 3 -p 8888:80 --name mynginx --network=mynetwork nginx ;(先docker service rm mynginx)
4.3 随便进入一个nginx容器,使用ping registry或curl registy:5000;当然如果registry把5000暴露出来,不走自定义网络也可以通信
4.4 docker stack(类似docker-compose,docker create 类似docker run),一次启动多个服务集群,相等于docker service分组。不需要指定自定义网络即可通信。
启动:docker stack deploy -c docker-compose.yml mynginx_registry(先删除原服务集群)
查看:docker stack ls ;docker stack ps mynginx_registry
- version: "3"
-
- services:
- mynginx:
- image: nginx
- ports:
- - 8888:80
- deploy:
- mode: replicated
- replicas: 3
- registry:
- image: registry
- deploy:
- mode: replicated
- replicas: 2
docker swarm --help
docker node --help
docker service --help
docker node --help
5.1安装
docker service create --name portainer --publish 9000:9000 --replicas=1 --constraint 'node.role == manager' portainer/portainer
5.2 web管理页面使用
访问http://192.168.203.134:9000;输出并确认初始密码admin/portainer;通过docker的2375端口连接.注意打开2375端口
- 1. vim /usr/lib/systemd/system/docker.service
- 在ExecStart=/usr/bin/dockerd-current \ 后追加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock\
- 2.重新加载配置,重启docker服务
- systemctl daemon-reload
- systemctl start docker
服务阔缩容,会保证负载均衡,另外还可进行images,network,container,volume,service,stack进行管理,如container管理页面强行杀掉一个容器,swarm马上会重新创建一个新的容器。点击add service还可以动态创建新的swarm服务集群,类似通过命令创建。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。