Docker基本知识笔记(五)--Docker Swarm

目录

一、工作模式

二、搭建集群

 三、Raft协议

四、Docker Stack

五、总结


一、工作模式

主要是分成两种节点,一个管理节点,一个工作节点,操作在管理节点上。

二、搭建集群

四台阿里云服务器

1.配置管理节点,配置自己的ip地址

docker swarm init --advertise-addr 172.16.2.176

2.其他节点加入管理节点中

工作节点

# 加入成为工作节点
docker swarm join --token SWMTKN-1-3lxtmz61k5zy62u7w42a0wxan8y08r9j8cl90c6c8l8gqni3m6-etym2ans20zf4u8b5vffnri4u 172.16.2.176:2377

# 查看是否加入成功
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker node ls
ID                            HOSTNAME                  STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
r6a6kr6vim4cwbyku6oqkcs3i     iZuf6ejgqhj1us1mu9aue2Z   Ready     Active                          20.10.14
uhfwu7g0fz3eo1tohkfo1id0u *   iZuf6ejgqhj1us1mu9aue4Z   Ready     Active         Leader           20.10.14

管理节点

# 生成加入管理节点token
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3lxtmz61k5zy62u7w42a0wxan8y08r9j8cl90c6c8l8gqni3m6-djn81xulnxlf1wciudn7jqukk 172.16.2.176:2377

生成加入token

# 管理节点
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3lxtmz61k5zy62u7w42a0wxan8y08r9j8cl90c6c8l8gqni3m6-djn81xulnxlf1wciudn7jqukk 172.16.2.176:2377

# 工作节点
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3lxtmz61k5zy62u7w42a0wxan8y08r9j8cl90c6c8l8gqni3m6-etym2ans20zf4u8b5vffnri4u 172.16.2.176:2377

 查看节点情况

# 查看节点
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker node ls
ID                            HOSTNAME                  STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
jf89a7hleaznfn4gvri2nqcff     iZuf6ejgqhj1us1mu9aue1Z   Ready     Active         Reachable        20.10.14
r6a6kr6vim4cwbyku6oqkcs3i     iZuf6ejgqhj1us1mu9aue2Z   Ready     Active                          20.10.14
q3jtib8o046x7ezy8i2l2ykqd     iZuf6ejgqhj1us1mu9aue3Z   Ready     Active                          20.10.14
uhfwu7g0fz3eo1tohkfo1id0u *   iZuf6ejgqhj1us1mu9aue4Z   Ready     Active         Leader           20.10.14

三、集群部署服务

1.创建一个服务

[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker service create -p 6000:80 --name mynginx nginx
govvq5j2iwamqs1icdzb096j0
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged 

[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker service ps mynginx
ID             NAME        IMAGE          NODE                      DESIRED STATE   CURRENT STATE                ERROR     PORTS
pw178f83qskl   mynginx.1   nginx:latest   iZuf6ejgqhj1us1mu9aue4Z   Running         Running about a minute ago             

2.进行扩缩

# 扩到5个
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker service update --replicas 5 mynginx
mynginx
overall progress: 5 out of 5 tasks 
1/5: running   [==================================================>] 
2/5: running   [==================================================>] 
3/5: running   [==================================================>] 
4/5: running   [==================================================>] 
5/5: running   [==================================================>] 
verify: Service converged 

# 缩到2个
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker service scale mynginx=2
mynginx scaled to 2
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

3.删除服务

[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker service rm mynginx 
mynginx
[root@iZuf6ejgqhj1us1mu9aue4Z ~]# docker service ls
ID        NAME      MODE      REPLICAS   IMAGE     PORTS

 三、Raft协议

        Raft协议: 保证大多数节点存活才可以用。 只要>1 ,集群至少大于3台!

四、Docker Stack

docker-compose 单机部署项目!

docker stack部署,集群部署!

# 单机
docker-compose up -d wordpress.yaml
# 集群
docker stack deploy wordpress.yaml

# docker-compose 文件
version: '3.3'
services:
	mongo:
		image: mongo
		restart: always
		networks:
			- mongo_network
		deploy:
			restart_policy:
			  condition: on-failure
			replicas: 2
	mongo-express:
		image: mongo-express
		restart: always
		networks:
			- mongo_network
		ports:
			- target: 8081
			  published: 80
			  protocol: tcp
			  mode: ingress
		environment:
			ME_CONFIG_MONGODB_SERVER: mongo
			ME_CONFIG_MONGODB_PORT: 27017
		deploy:
			restart_policy:
			  condition: on-failure
			replicas: 1
networks:
	mongo_network:
	  external: true

五、总结

docker可以初始化一个 swarm 集群,其他节点可以加入。(管理、工作)

Node 就是一个docker节点。多个节点就组成了一个网络集群。(管理、工作)

Service 任务,可以在管理节点或者工作节点来运行。核心。

Task 容器内的命令,细节任务!

猜你喜欢

转载自blog.csdn.net/qq_38295645/article/details/124172883
今日推荐