Swarm 安装使用

docker 1.12 版本后都自带 swarm 命令,无需安装;更多内容 docker swarm --help docker 安装略,参考 'docker分类' 中 docker 几种方式,推荐源码安装

环境

[root@swarm-1 ~]# cat /etc/hosts     # 其他节点统一 hosts 内容
'''
10.10.181.249 swarm-1
10.10.181.248 swarm-2
10.10.181.246 swarm-3

1、初始化集群

# 需要开放:TCP 端口 2377:用于集群管理通信;
# 需要开放:TCP 和 UDP 端口 7946:用于节点之间通信
# 需要开放:UDP 端口 4789:overlay 网络流量
# 多块网卡: 必须使用--advertise-addr指定IP。
# 暴漏给外界调用socket 地址: --listen-addr, 默认 2377
docker swarm init --advertise-addr 10.10.181.249

"""
	Swarm initialized: current node (4i8ii9h7gdoyo3owkyt97dd10) is now a manager.

	To add a worker to this swarm, run the following command:

	    docker swarm join --token SWMTKN-1-15g0or6yr285yunncbjqlwxippgee3m44wjp0hm6z9cokx7opr-63p3p1is1075okeg6ngy170l8 10.10.181.249:2377

	To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
"""

2、增加节点

docker swarm join --token SWMTKN-1-15g0or6yr285yunncbjqlwxippgee3m44wjp0hm6z9cokx7opr-63p3p1is1075okeg6ngy170l8 10.10.181.249:2377

3、提升为高可用

# 从 worker 节点中提升为管理节点, 考虑到高可用,最好管理节点为奇数,最少为3个管理节点
docker node promote swarm-2 swarm-3
"""
	[root@localhost ~]# docker node ls
	ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
	4i8ii9h7gdoyo3owkyt97dd10 *   swarm-1             Ready               Active              Leader              19.03.9
	s6dr5w04tnnbkozdlzjus7e6i     swarm-2             Ready               Active              Reachable           19.03.9
	x0mw6qwgoaul3qtlhqrmm6b0d     swarm-3             Ready               Active              Reachable           19.03.9
"""
# 这里可以测试一下,主关机后,是否可以正常运行

4、新建服务

docker service create --replicas 1 -p 80:80 --name nginx nginx:latest

5、升级、降低副本

docker service scale nginx=50

6、查看日志

docker service logs nginx

7、删除服务

docker service rm nginx

8、图形化

# <了解一下即可>
docker search portainer
docker pull portainer/portainer

# 基于docker运行
docker run -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer

# 基于 swarm 运行,这里没有指定运行在管理节点,后面再优化,节目操作必须在管理节点
docker service create -p 9000:9000 --replicas 1 \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=volume,src=portainer_data,dst=/data \
portainer/portainer
# 浏览器访问:http://IP:9000

Last updated