简介

相信很多小伙伴都或多或少听过或者用过Docker,这里先做一下简单科普:

Docker是一个装有各种应用程序的容器,我们在Docker中运行的程序称为镜像(Images),镜像在拉取后就可以直接运行了,省去了我们配置各种环境的麻烦,同时开发好的项目可以直接封装成镜像,在任何一台装有Docker的机器上运行,十分方便~

Docker里面可以运行的程序很多,包括Java等各种语言写的项目、数据库、Redis缓存、消息队列等,还可以运行Ubantu、Centos等操作系统。接下来的教程就是如何通过Docker拉取镜像,运行多个服务器,并且部署成分布式节点。

开发环境

腾讯云学生机 1核2G Centos7

Docker的使用

首先安装docker,安装命令



yum install docker



安装好之后如图所示




docker节点宕机检测 docker节点是什么_Docker


首先我们需要拉取镜像,可以选择使用ubuntu或者Centos,因为大多数服务器都采用Centos作为更稳定的操作系统,所以这里采用Centos演示。

首先查看可用的Centos版本,执行命令


docker节点宕机检测 docker节点是什么_centos_02


或者直接访问镜像库

Docker Hubhub.docker.com

可以看到各种镜像,并且按照Stars数从高到低排序

接下来拉取指定版本的镜像,这里以安装Centos7为例,冒号后面称为Tag,同一仓库源可以有多个 Tag,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。


docker节点宕机检测 docker节点是什么_centos_03


查看下载的镜像


docker节点宕机检测 docker节点是什么_centos_04


由于一个Docker中只能存在一个版本的镜像,我们要实现多节点服务器的话必须同时启动多个容器,因此我们可以再使用相同的方法下载一个Centos8和一个ubuntu镜像。


docker节点宕机检测 docker节点是什么_centos_05


这样我们需要的三个节点容器就已经准备好了,下一步就是分别进入三个容器做一些网络配置和环境安装。

分布式节点的配置

运行命令进入Centos7容器


docker run -itd --name centos-test centos:centos7


  • -i 交互式操作
  • -t 终端
  • -d 默认不进入容器,进入需要使用docker exec


docker节点宕机检测 docker节点是什么_Docker_06


这条指令的意思是,以centos-first的名字启动,之后在docker中的名字就为centos-first。启动的镜像名为centos,tag名为centos7,终端交互式操作,并且启动后立刻进入终端。可以看到我们已经进入了容器的bash中。

首先测试一下容器的网络状态,ping一下度娘,发现网络是连通的,同理跟宿主机也是连通的。


docker节点宕机检测 docker节点是什么_docker节点宕机检测_07


退出容器


docker节点宕机检测 docker节点是什么_docker节点宕机检测_08


查看容器的信息


docker节点宕机检测 docker节点是什么_docker节点宕机检测_09


docker节点宕机检测 docker节点是什么_centos_10


可以看到容器的ip地址。

Docker在启动时会得到一个ip地址,然而容器在每次启动时,会由Docker分配一个ip地址,并且按启动顺序递增。这就导致了容器的ip地址可能会发生变化,我们希望做的服务器集群最好是固定的ip地址,否则每次启动都要重新配置。

Docker可以在容器启动时选择网络模式,默认的有3种模式


docker节点宕机检测 docker节点是什么_centos8使用docker_11


bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

除了以上三种系统默认的网络类型,我们还可以自定义网络类型,同样可以使用--network参数启动,从而达到指定ip地址的目的。但是默认的网络类型不支持指定ip地址,所以我们必须自定义网络类型。


docker节点宕机检测 docker节点是什么_centos_12


首先,创建自定义网络mybridge,子网地址为172.30.0.0/16


docker节点宕机检测 docker节点是什么_centos_13


以固定地址172.30.0.2启动centos容器


docker节点宕机检测 docker节点是什么_Docker_14


可以看到容器的ip地址固定成功了


docker节点宕机检测 docker节点是什么_centos_15


最后,以同样的方法启动另外两个节点,分别固定ip为172.30.0.3和172.30.0.4


docker节点宕机检测 docker节点是什么_centos8使用docker_16


至此,分布式节点的准备工作已经就绪了,我们启动了3台Linux容器,分别固定了IP地址。


docker节点宕机检测 docker节点是什么_Docker_17

centos-first 172.30.0.2 centos-second 172.30.0.3 ubuntu 172.30.0.4