Docker就是加上封装技术的半虚拟化微云,这项在硅谷之外的技术,在世界各地都很受欢迎。我们已经将它运用到与客户的合作之中,以下是我们对Docker的一些观察和想法。

Docker是构建在Linux LXC上的轻量级容器,通过cgroup等机制构建看似隔离的虚拟机,而实际上是没有任何虚拟化的。因此Docker运行得非常快,就像它的名字一样,是轻量级的。Docker也是一个有趣的包装系统,它有自己的文件系统,所有你需要的文件、操作系统、代码和内容都放在版本控制和增量更新的“image”内。

你下载一个镜像并启动就能创造一个在运行的服务器内全面运行的服务器。它需要1分钟来安装和运行,你可以做“yum install docker-io”和“docker run centos”,会有一个Centos机器运行。这些不管在物理机、测试环境还是生产环境都能够起作用。

然而,令人感到奇怪的是, Docker Image/Container为何只需要运行一个单一的进程就能启动容器。例子表明,Nginx和MySQL就像其他SSH shell, Cron Jobs或是系统日志,如果没有盒子就都不能运行。取而代之,你需要运行像监测或supervisord这样的主要进程让它开始做其他事情。基本上它是一个虚假的初始化过程。有些博客可能会说这是错误的,甚至想要运行这些东西,但他们不会意识到你在实际系统中是需要它们的,至少我们需要。

在监控方面,Docker主机可以监控容器,但它无法监控如MySQL,Nginx甚至Tomcat。为了实现这个目标,我们监测主进程,同时用一个与监听网络相连的Zabbix代理,这样我们就可以监视内部发生了什么。虽然不像一个真正的虚拟机,因为它不是一个真正的操作系统,所以就像RAM只是出主机内存的大小但是忽略了容器限制,有些不能轻易被监视。对于正在运行的进程或磁盘空间,自定义检查比如MySQL或JMX等都是很有用的。/ proc文件系统和RAM也是一样,并不总是正确或有用的。对此,我们仍在学习中。

网络是丰富多彩的,所有主机上的虚拟化系统也是如此。Xen,Docker主机级进程架起了桥梁(开关)将伪虚拟机联系起来。不同于Xen, Docker主机级进程是在桥上构建自己的网络IP空间,在默认172.0.0.0情况下还行,但如果无法从其他主机路由,这样使用起来会很痛苦。Docker允许容器直接暴露端口的主机IP是创新的、可路由的。我们也将我们的sshd和Zabbix ports设置成这样,但必须避免在容器生成文件或刚启动时的碰撞。

Docker文件可以用于构建镜像的spec文件、多版本的文件系统、注册中心服务器存储和索引图像、公共DockerHub服务等等。虽然有很多小细节,总的来说不算太坏,Docs也很好。

总而言之,Docker是一个强劲的、创新的、有趣的系统。我们还在学习有关的部署增加,这对开发人员肯定是有好处的,也是最新的Devops策略的关键组成部分。因为Docker的包装和更新,制定好规格以及一切都提前计划,我们成为了它的粉丝。Docker显然是一个技术要我们来观察。Docker的封装、更新服务、制定规格以及提前计划都做得很好,我们成为了它的粉丝。Docker显然是一个值得关注的技术。如果我们能帮助你设计、部署和管理基于Docker的系统,请让我们知道。