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