docker swarm 部署服务
-
一部分
docker swarm init 初始化docker swarm集群manager
docker service create --name demo busybox 创建一个service
docker servide scale demo=5 横向扩展为5个
docker service ls 查看服务
docker service ps demo 查看服务在哪些节点运行
docker service rm deom 删除服务 -
二部分
部署一个应用服务和一个数据库服务。
两个服务可能会分配到不同的swarm节点,通过oveylay网络通信,可以通过servie name通信。swarm会为每个service分配一个虚拟IP, 类似DNS服务发现原理,每一个service会分配一个虚拟ip即vip,vip并不是swarm节点的ip地址也不是容器的ip,因为service会做横向扩展,service不一定在swarm的哪个节点上,所以每个service都有一个vip,DNS即servie name服务名对应vip。
docker network create -d overlay demo 创建overlay类型的网络,名字叫demo
docker netwrok ls 查看所有网络
docker service create --name mysql --env MYSQL_ROOT_PASSWORD=root --env MYSQL_DATABASE=wprdpress --network demo --mount type=volume,source=mysql-data,destination=/var/lib/mysql mysql 启动mysql服务
docker service create --name wordpress -p 80:80 --network demo --env WORDPRESS_DB_PASSWORD=root --env WORDPRESS_DB_HOST=mysql wordpress 启动wordpress服务,做了端口映射,使用swarm任意节点的ip都可以访问
-
三部分
Routing Mesh的两种体现
Internal----container和container之间的访问通过overlay网络(通过vip)
Ingress—外部访问的负载均衡,服务端口被暴露到各个swarm节点,内部通过lvs进行负载均衡 -
四部分
docker network ls
docker network create -d overlay demo // 创建overlay类型的网络,名字叫demo
docker network inspect docker_gwbridge // 查看使用该网络的所有容器