docker三剑客成都


docker中的三剑客是指什么
docker中的三剑客是指swarm、compose和machine。compose是用来界说和运转一个或多个容器运转和运用的东西;Machine是一个简化Docker装置的指令行东西;Swarm是社区供给的原生支撑Docker集群的东西。
本教程操作环境:linux5.9.8体系、docker-1.13.1版、Dell G3电脑。
docker容器中的三剑客是swarm、compose和machine。
Compose
1. 概述
在实际生产环境中,一个运用往往由许多服务构成,而 docker 的最佳实践是一个容器只运转一个进程,因而运转多个微服务就要运转多个容器。多个容器协同工作需要一个有效的东西来办理他们,界说这些容器如何彼此相关。compose 应运而生。
compose 是用来界说和运转一个或多个容器(一般都是多个)运转和运用的东西。运用 compose 可以简化容器镜像的构建以及容器的运转。
compose 运用 YAML 文件来界说多容器之间的联系。一个 docker-compose up 就可以把完整的运用跑起来。 本质上, compose 把 YAML 文件解析成 docker 指令的参数,然后调用相应的 docker 指令行接口,从而将运用以容器化的方式办理起来。它通过解析容器间的依靠联系次序地发动容器。而容器间的依靠联系由 YAML 文件中的 links 符号指定。
2. compose 装备简介
Compose 是对 docker 指令的封装,默认运用 docker-compose.yml 文件指定各个指令中的参数。
一个简略的比如:

web:
  build: .
  ports:
  - 8080:80
  volumes:
  - . : /code
  links:
  - redis
redis:
  image: redis
这个 YAML 文件界说了两个服务: Web 和 Redis, 服务的称号由用户自界说。供给 Web 服务的镜像从 Dockerfile 构建; Web 服务监听80端口,并和主机的8080端口树立映射;主机的当前目录挂载到容器里的 /code 目录上;Web 服务器通过链接 Redis 容器来访问后台 Redis 数据库。而 Redis 数据库服务是通过运转 Redis 镜像来供给的。
在 docker-compose.yml 文件中,每个界说的服务都至少包括 build或image 其中之一,其他指令都是可选的。 build 指令指定了包括 Dockerfile 的目录,可所以相对目录也可所以绝对目录。
docker-compose.yml 文件中的 "ports" 符号对应于 docker run 的 "-p"选项; "volumes"符号对应 docker run 的 "-v" 选项; "links" 符号对应 docker run 的 "--links"选项。
此外,image 用于指定服务的镜像。
最终,在 docker-compose.yml 所在的目录下履行 docker-compose up指令,Web 和 Redis 服务都会成功运转起来。
Machine
1. 概述
Docker Machine 是一个简化Docker 装置的指令行东西。通过一个简略的指令行即可在相应的渠道上装置 Docker,为用户供给了灵活的功用,使得用户可以在任一主机上运转 Docker 容器。简略说,一个 Docker Machine 便是一个 Docker host 主机和通过装备的 Docker client 的结合体。
技术上讲, Machine 是一个结构,比较敞开。关于任何供给虚拟机服务的渠道,只需在这个结构下开发针对该渠道的驱动,,Docker Machine 就可以集成到该渠道,在该渠道上履行创立、删去、发动、中止等行为。
Docker Machine 的架构如图所示
2. Machine 的基本概念和流程
Docker Machine 首要会创立一个虚拟机并在其上创立一个 Docker host,然后运用Docker client 和 Docker host 通讯,从而在 Docker host 上创立镜像,发动容器。
用 Docker Machine 创立虚拟机的时分需要制定相应的驱动,目前支撑本机的驱动有 VirtualBox 驱动、VMware 驱动及 Windows 下的 Hyper-V 驱动。除此之外,Machine 还支撑云主机的创立。只需开发了契合结构规范的驱动,Docker Machine 就可以支撑相应的渠道。
Machine 创立的 Docker host 的IP地址是所创立的虚拟机的IP地址。
运用Docker Machine 及 VirtualBox 驱动创立本地虚拟机并建立 Docker host 的运转流程如下:
履行 docker-machine create --driver virtualbox dev指令。此指令首要创立用于 Docker client 和 Docker host 通讯誉的 CA 证书。 其次创立 VirtualBox 虚拟机, 并装备用于通讯的 TLS 参数及装备网络, 最终部署 Docker 的运转环境 即 Docker host。
在 Docker client 里运转 eval "$(docker-machine env dev)"指令, 装备用于 Docker host 通讯的环境变量。
运用 docker 相关指令创立或发动相应的容器。
Swarm
1. 概述
Swarm 是 Docker 社区供给的原生支撑 Docker 集群的东西。 它可以把多个 Docker 主机组成的体系转换成为单一的虚拟 Docker 主机。Swarm 对外供给两种 API。一种是标准的 Docker API,例如 Dokku、Compose、Krane、Flynn、Deis、Jenkins等;另一种是 Swarm 的集群办理 API,用于集群的办理。
Swarm东西本身不是很成熟,不主张用在生产环境。
而 Google 开源的Kubernetes 是目前容器生态圈中最受欢迎的编列部署东西。
Kubernetes 的架构根据有多个 Minion 节点的 Master 服务器。关于 K8s我还没有接触到,后边学到后再总结在这里。