even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、介绍

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目

不同点:

Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,

Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。

所以在生产环境产中,docker swarm更适合进行项目的布署

2、swarm快速上手

docker info 这个命令可以查看我们的docker engine 有没有激活swarm模式, 默认是没有的,我们会在对应的信息中看到

inactive表示关闭状态, active表示开户状态 

激活swarm, 有两个方法

  • 初始化一个swarm集群,自已成为manager
  • 加入一个已经存在的swarm集群
# 创建docker swarm 集群
docker swarm init
# init后会返回一个token,这个token是其他节点加入集群所需要的token

# 关闭docker swarm 集群
docker swarm leave [--force]
# 单节点关闭会有个报错,这个时候就需要用到 --force进行强制离开 # 查看docker swarm 集群的节点信息 docker node ls

docker swarm 创建服务

# 创建服务
docker service create  nginx:latest
# --name 表示服务的名称 # 如果本地没有nginx的镜像,会进行拉取镜像再进行创建服务 # 查看服务列表 docker service ls # 查看服务的祥细信息【service id可以从 ls中获取】 docker service ps [service id] # 一个id有可能对应着好几个service,因为服务是可扩展 # 服务的水平扩展 docker service update [service id 或 service name] --replicas [扩展数量] # 服务的停止和删除 docker service rm [service id 或service name]

 docker swarm 集群的创建

# 主机上
docker swarm init --advertise-addr [manage IP]:2377
# 在云主机上,要确保 2377这个端口是开放的,可以ping通
# manage IP 是指服务器的公网ip

# 附属机上
docker swarm join --token [token] [manage IP]:2377
# 这里的token是批主机上init后返回的token

# 查询 manage 的token [需要在主机上操作]
docker swarm join-token worker #查看加入woker的命令。

docker swarm join-token manager #查看加入manager的命令

docker swarm join-token --rotate worker #重置woker的Token。

docker swarm join-token -q worker #仅打印Token

 注意:如果在创建服务的时候一直卡在preparing中,那么可以通过修改源来解决 参考:https://www.runoob.com/docker/docker-mirror-acceleration.html

3、docker swarm的网络

创建swarm集群后,系统会默认添加两个网络一个是overlay网络,一个是bridge网络

第一: 东西向流量, 也就是不同的swarm节点上的容器之间如何通信,swarm 通过 overlay网络来解决

第二: 南北向流量, 也就是swarm集群里的容器如何对外访问, 比如互联网这个是  linux bridge + iptables NAT来解决

创建 overlay 网络

docker network create -d overlay mynet

创建服务

docker service create --network mynet --name test --replicas 2 [镜像名] ping 0.0.0.0

# 以上的语法同docker container的一样
# --network 是指定网络
# --name是指定名称
# --replicas 指定扩展个数
# ping表示执行的命令

 注意:通常swarm是不支持边构建边创建镜像,一般是创建完镜像后进行构建

4、 stack启动服务

先在swarm manager节点上安装一下 docker-compose

docker stack deploy --compose-file docker-compose.yml 应用名称

 

posted on 2022-08-14 16:44  even_blogs  阅读(140)  评论(0编辑  收藏  举报