首页  >  文章  >  运维  >  docker中的三剑客是指什么

docker中的三剑客是指什么

青灯夜游
青灯夜游原创
2021-11-25 17:42:536112浏览

docker中的三剑客是指swarm、compose和machine。compose是用来定义和运行一个或多个容器运行和应用的工具;Machine是一个简化Docker安装的命令行工具;Swarm是社区提供的原生支持Docker集群的工具。

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 文件中,每个定义的服务都至少包含 buildimage 其中之一,其他命令都是可选的。 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 的架构如图所示

1.png

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我还没有接触到,后面学到后再总结在这里。

K8s 架构框图

2.png

组件解释:

  • Master:主控服务器,运行 kebernetes 的管理进程,包括 API 服务、备份控制器和调度器等。
  • Minion: Kubelet 服务和 Docker 引擎的主机, Minion 接受来自 Master 的指令
  • Kubelet:Kubernetes 节点层面的管理器, 运行在 Minion 上
  • Pod:多个容器的集合,并且这些容器运行在同一个 Minion 上。 Pod 是 K8s 的最小管理单元
  • Replication Controller:管理 Pod 的生命周期
  • Service:定义允许容器暴露出的服务和端口,以及通信交互的外部代理
  • Kubecfg:命令行接口,与 Master 交互,请求应用业务的部署、管理

推荐学习:《docker视频教程

以上是docker中的三剑客是指什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn