百万级云客服实时与离线计算架构技术的实现(6)

Docker可以使用自定义网桥的方式来进行跨主机的容器连接。Docker默认的网桥是docker0,他会连接本地所有的容器。举个例子,容器的虚拟网卡在主机上叫做


Docker可以使用自定义网桥的方式来进行跨主机的容器连接。Docker默认的网桥是docker0,他会连接本地所有的容器。举个例子,容器的虚拟网卡在主机上叫做veth*,docker0网桥可以容易的把这些网卡侨接在一起。可以把Docker通过网桥连接在一起的网络看成一个私有网络。如果外网需要连接到容器中,需要进行一个虚拟交换。例如,主机172.0.10.1和主机172.0.10.2的网卡一般连接着同一个VLAN101。需要把内部的端口映射到外部暴露的物理网络上,那么多台物理主机的容器就可以通过外部映射端口互相访问了。这种实现的方式是需要知道容器在启动的时候,系统给它分配的IP地址。

实现docker容器集群化的管理,关键在于两个方面。一是容器名称需要动态管理。二是需要底层网络提供的跨主机的支持。容器利用固定的名称来互相通信。目前的解决方案还并不是特别完美,因为一旦容器发生重启,IP地址就会发生变化,系统会随机给应用容器分配IP地址,原先的连接就无法使用了。

3.3 应用自动化部署

对于开发运维人员来说,梦寐以求的是一次性成功部署所有的组件。可以不理会底层系统,这一点优点像JVM,都已可以无差别的快速部署系统。并且系统与系统之间能够快速构建通信原则。

Docker可以帮助开发人员、测试人员、运维人员完成自动化部署。自动化部署来自于它能够系统全部打包。在完全开发完成后,上传到DockerHub的仓库里面。

Docker自动化部署流程:

(1)创建和使用私有仓库

安装Docker后,通过registry命令来搭建一个本地的私有仓库

$sudodockerrun-d-p5100:5100registry

这行命令可以自动下载并启动一个registry的docker容器,并且创建了本地的私有仓库。一般情况下,容器可以通过-v参数来映射本地文件夹与容器文件夹的相对目录。若不指定,默认为/etc/tmp/docker/registry.

下面例子是通过registry来保存容器的数据信息。

$sudodockerrun-d-p5100:5100-v/opt/data/registry:/usr/local/docker/registryregistry

此时,本地应用程序将会在5100端口去开启一个私有仓库服务。

(2)使用Dockerfile创建镜像

#Thisdockerfileusestheubuntuimage

#VERSION2-EDITION1

#Author:Zookeeper

#Commandformat:dockerimage

#指定基础镜像的来源FROMubuntu

#指定维护者的信息MAINTAINERzookeeperzookeeper