单主机上实现多docker虚拟主机的建立和服务部署

在以前的文章中咱们介绍了不少docker相关的基础概念,咱们了解了如何将一个应用程序build为一个镜像,并经过该镜像建立一个容器实例,使得咱们的应用程序能够在容器中运行;同时经过学习docker compose,了解了如何经过docker compose来管理一组服务;以及经过学习docker swarm了解了如何管理docker容器集群。在咱们的实际开发过程当中,开发环境若是咱们也弄多个vm server来搭建集群并部署服务的话,这无疑会给咱们的开发带来很大的不便,本篇文章就为你们介绍一下如何在单主机server上实现多docker虚拟主机的建立和服务部署(一样适用于多sever的docker集群管理和服务部署)。node

在以前的Docker Swarm Mode简介中咱们介绍了docker集群,node以及docker swarm模式,swarm由多个节点组成,能够是物理节点,也能够是虚拟节点,咱们能够在其中一个节点中经过运行docker swarm init 以启用swarm mode模式,并使当前的节点成为一个集群管理器,而后在其余节点上运行docker swarm join, 让他们做为worker加入到集群中。本章咱们在一台Windows 10操做系统的机器上建立出两个虚拟vm,而后将这两个虚拟vm转换为一个集群。首先须要了解一下Docker Machine。docker

Docker Machine

docker machine是docker三剑客之一,除了docker machine以外还有以前咱们已经介绍过的docekr compose和docker swarm。经过docker machine咱们能够在主机上快速建立包含docker环境的虚拟机。docker machine的安装已经被集成到了docker 的安装过程当中,咱们无需单独安装。咱们能够经过docker-machine version指令查看当前机器上的版本信息。如图所示:app


Create Cluster

在Windows 10 系统中咱们使用hyperv驱动来建立Docker Machine。在建立Docker Machine以前,必须事先在Hyper-v管理器中新建一个外部虚拟交换机,以便在建立docker machine的时候执行虚拟交换机的名称。
ssh

Create a Virtual Switch

1. 运行Hyper-v管理器,如图所示:post


2. 点击右侧的Virtual Switch Manager,弹出如图所示的dialog:学习


3. 选择External的virtual switch并点击Create Virtual Switch按钮,如图所示:ui


4. 输入Virtual Switch的名称,并勾选中Allow management operating system to share this network adapter, 如图所示:this


5. 点击apply button,并点击ok button,这样咱们就建立好了一个virtual switch操作系统

Create VMs

有了virtual switch以后,咱们须要经过docker-machine create指令来建立两个包含docker环境的虚拟机,做为咱们集群中的两个节点,具体指令以下所示:命令行

docker-machine create -d hyperv --hyperv-virtual-switch DockerVS vm1

docker-machine create -d hyperv --hyperv-virtual-switch DockerVS workervm1

经过上述指令咱们建立了两个包含docker环境的vm,分别为vm1和workervm1,咱们能够经过指令docker-machine ls 来查看当前主机所建立的vm信息,如图所示:


初始化Docker Swarm

建立好vm以后,咱们来开始搭建包含两台vm的docker swarm,关于docker swarm的相关知识咱们已经在 (Docker Swarm Mode简介)中进行了介绍,这里咱们就不进行过多的介绍了,直接动手操做。首先咱们经过docker-machine ssh vm1指令将当前命令行切入到指定的vm1中,如图所示:


执行docker swarm init 指令初始化docker swarm,同时将vm1做为swarm manager,如图所示:


在命令的执行结果中咱们能够看到:to add a worker to this swarm, run the following command,咱们以一样的方式进入到workervm1中,而后执行指令:

docker swarm join --token tokenstr manageripaddr:2377 

如图所示:

从提示中咱们能够看到workervm1已经做为worker节点加入到了swarm中。咱们经过docker-machine ssh vm1指令进入到vm1中,而后执行docker-machine node ls 指令查看当前swarm中的节点信息,如图所示:


经过以上这些操做咱们便在一台主机上搭建出了包含2台vm的docker集群。

注意:Swarm管理节点是swarm中能够执行命令或受权其余机器加入swarm做为工做节点的惟一机器。工做节点仅用于提供功能,而且无权告知任何其余机器它能够作什么 和不能作什么。

接下来就是向集群中部署服务,须要注意的是在部署服务以前,咱们须要将主机中的docker-compose.yml文件经过指令

docker-machine scp docker-compose.yml vm1:~ copy到集群的管理机器vm1中,接下来服务部署的部分你们能够参照Docker Swarm Mode简介中的 “向集群中部署服务“的章节。


注意:最后站点的访问地址为http://(vm1 ip or workervm1 ip):port


但愿以上讲解能让你们对Docker有更深刻的了解和学习。


上一章(Docker Swarm Mode简介)

下一章(Docker实践过程当中遇到的问题总结 )

相关文章
相关标签/搜索