在Docker容器中提供了三个非常有用的工具,它们分别是:Docker Compose、Docker Machine和Docker Swarm。下面分别进行介绍。
视频讲解如下:
一、容器编排工具Docker Compose
在使用Docker部署应用程序的时候,可以通过定义Dockerfile来完成应用服务的描述,再使用docker build、docker run等命令操作容器。但是随着应用架构的不断地复杂化和微服务的应用,通常在一个系统中需要包含多个模块,而每一个模块一般情况下都会通过Docker的容器部署到多个容器中。如果每一个模块都通过手动方式来完成部署,效率是非常低。同时也不利于系统的维护和扩展。
使用Docker Compose可以非常方便来定义和运行复杂应用系统,它是Docker提供的一个服务编排工具。Docker Compose不再使用shell脚本命令来管理容器,而是通过定义一个yml的服务描述文件来完成对Docker容器的管理。
下面的yml文件将会使用Docker Compose部署大数据计算引擎Flink集群。
version"2.1" services jobmanager image flink 1.12.7-scala_2.11 expose "6123" ports "8081:8081" command jobmanager environment JOB_MANAGER_RPC_ADDRESS=jobmanager volumes /root/flink-conf.yaml:/root/flink-conf.yaml restart always taskmanager image flink 1.12.7-scala_2.11 expose "6121" "6122" depends_on jobmanager command taskmanager links "jobmanager:jobmanager" environment JOB_MANAGER_RPC_ADDRESS=jobmanager volumes /root/flink-conf.yaml:/root/flink-conf.yaml restart always
二、容器远程管理工具Docker Machine
Docker Machine是Docker官方提供的一个远程管理工具。通过使用Docker Machine,可以帮助开发人员在远程主机上安装Docker;或者在远程的虚拟主机上直接安装虚拟机并在虚拟机中安装Docker。Docker Machine还提供了相应的命令来管理这些远程的Docker环境和虚拟机。下图是官方提供的一张关于Docker Machine的图片,很形象地说明了Docker Machine的功能。
Docker Machine可以在多种平台上安装使用,包括Linux、Windows和MacOS。本书重点以Linux为基础来介绍Docker Machine的安装和使用。Docker Machine使用go语言开发,并且依赖Docker的引擎。因此在使用Docker Machine之前,需要在本地先安装Docker的环境。
三、容器集群管理工具Docker Swarm
Docker Swarm是Docker官方提供的一款集群管理工具,它的主要作用是把若干台Docker宿主机抽象为一个整体,并且通过一个入口统一管理这些Docker宿主机上的各种Docker资源。Docker Swarm和Kubernetes比较类似,但是它更加轻量级,但具有的功能也较Kubernetes少一些。有了Docker Swarm集群后,便可以实现应用程序的负载均衡与失败迁移的功能。
Docker从1.12.0 版本开始,便已经将DockerSwarm集成进了Docker的引擎中。因此,Docker Swarm不需要单独进行安装。由于Docker Swarm内置了服务发现的功能,因此也不再需要进行服务发现配置了。Docker Swarm与Docker Compose类似,都是Docker官方提供的服务编排工具。但是二者所不同的是,Docker Compose 是在单个宿主机上创建多个容器,从而进行服务编排的工具;而 Docker Swarm 则可以在多个服务器或宿主机上创建容器,从而组成集群提供相应的服务。因此,从功能上看,Docker Swarm比Docker Compose更加强大。
下图展示了Docker Swarm的体系架构。