天天看点

Docker之Swam

一、前言

Docker简介

Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0 协议开源。

Docker开源让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的容器性能开销极低。

Swam简介

Docker Swarm 是一个 Dockerized 化的分布式应用程序的本地集群,它是在 Machine 所提供的功能的基础上优化主机资源的利用率和容错服务。具体来说,Docker Swarm 支持用户创建可运行 Docker Daemon 的主机资源池,然后在资源池中运行 Docker 容器。Docker Swarm 可以管理工作负载并维护集群状态。

除了资源优化,Docker Swarm 可以保证应用的高可用性和容错性。Docker Swarm 会不断的检查 Docker Daemon 所在主机的健康状态。当某个主机不可用时,Swarm 就会将容器迁移到新的主机上。

Docker Swarm 的亮点之一是它可以在应用的生命周期内扩展,也就是说当应用从一个主机扩展到 2 个、20 个或者 200 个的时候,用户可以保证接口的一致性。

Swarm 的架构是可插拔的,系统已经包含一个默认的调度器。其它的厂商可以实现自己的调度器。

Docker之Swam

二、swam原理

swam集群由管理节点(manager)和工作节点(work node)构成

  • manager:负责集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。比如docker节点的上下线,容器的启停。
  • node:主要负责运营相应的服务来执行任务(task)

三、搭建swam集群

初始化swam集群

 # 指定一个节点作为swam集群的manager

 docker swam init --advertise_addr ip

查看节点列表

 docker node ls

查看swam集群信息

 docker info

查看所有堆栈

 docker stack ls

删除服务

 docker stack rm

查看所有服务

 docker service ps

查看服务部署具体信息

 # --pretty 格式化输出

 docker service inspect --pretty 服务名称