大数跨境

Docker容器技术及Docker在Cavium ThunderX ARM服务器上的最佳实践

Docker容器技术及Docker在Cavium ThunderX ARM服务器上的最佳实践 Marvell
2017-12-15
3
导读:Docker的出现,实现了轻量级虚拟化方案以及类似于版本管理的映像管理模式,使云服务的提供者有能力提供真正达到云计算标准的PaaS服务。这也是为什么自从2013年开源以来,短短几年,Docker就迅速

Docker的由来

Docker是PaaS 提供商 dotCloud 开发的一个基于LXC 的高级容器引擎,基于go语言, 于2013年开源,并遵从Apache2.0协议开源。

作为一种容器技术,Docker很好地提供了PaaS(Platform-as-a-service)服务。此前的云计算服务,在IaaS(Infrastructure-as-a-service)层面基本已经非常成熟了,人们可以方便地从云端获取一台机器,基本达到了“按需获取、按量计费、弹性扩展”的目标。然而,在云端PaaS层面,状态却一直不理想,人们只能在云端直接获得数据库实例这类产品级的PaaS服务。而对于一个希望将IT系统整体迁移到云端的组织来说,其日常的开发、测试、部署、运维等活动,并没有得到显著地改善;同时,传统的虚拟化技术,对资源的分配并未提供最优的解决方案,利用率并不充分。

这时Docker出现了,轻量级虚拟化方案以及类似于版本管理的映像管理模式,很好地解决了上面提到的问题,从而使云服务的提供者有能力提供真正达到云计算标准的PaaS服务。这也是为什么自从2013年开源以来,短短几年,就迅速在云计算领域获得普及的原因。

出于商业运营的需要,2017年4月份Docker.in公司将Docker项目名称更名为Moby,并继续推动开源,而Docker公司仍然是开源社区的主要推动力量。Docker.inc将其产品命名为Docker,基于Moby开源项目,分为Docker CE(Community Edition)版和Docker EE(EnterpriseEdition)版,类似于Redhat公司的Fedora和RHEL模式。以下讨论的Docker仍指容器技术。

Docker的核心技术

在传统的服务器上或者其上的虚拟机中部署业务时,在许多应用程序和客户之间管理依赖关系及二进制文件时需要做大量的工作。Docker利用Linux cgroups和namespaces技术实现隔离和虚拟化,并将应用、依赖和配置打包成Docker镜像,实现满足应用程序可以跨环境一致性部署,这也体现了Docker公司”Build, Ship, and Run Any App,Anywhere”的理念。对于镜像的管理,提供类似于git的语义,例如“Docker push”,“Docker commit”,这样可以让应用程序开发人员可以轻松地采用新技术,并将其融入到现有的workflow中。

下图是Docker运行时架构,其中client端提供命令行接口,负责将命令发送给daemon,daemon负责执行命令,实现Docker的核心功能。Registry可以看作是仓库,存放Image,Image相当于封装好的应用,运行后在系统中就是一个container。用户可以从社区仓库、Docker公司或者镜像仓库下载成熟的Image,也可以按照根据需要,通过Dockerfile构建自己的Image。

同时为了支持云计算环境下,服务器规模众多的特点,除了Docker本身,还需要有分布式、集群化部署所必需的编排工具、管理工具,Docker项目本身有Swarm工具,以及Google公司的Kubernetes等等。Docker已经将kubernetes列为官方支持的编排工具。

Docker在云计算领域的部署情况

既然Docker在理论上如此美好,现实中的应用是否得到了证明了呢?从目前各大厂商的部署状态来看,Docker绝非是浪得虚名,是经得起实践检验的。

  • 阿里巴巴:经过了几轮的Docker化,将交易核心应用和DB应用的一部分实现了Docker化,几十万Docker容器撑起了双11交易几十万笔每秒的下单峰值;

  • 类似阿里巴巴,京东也存在618、双11这样的峰值流量。京东的弹性云架构实现了对峰值流量的动态扩充,京东弹性云基于Openstack和Docker,目前京东的主流业务,例如图片展现、单品页、团购页、交易等等都已经Docker化,有几十万个Docker容器实例同时在线运行;

  • Tencent 腾讯的实时检索分析平台Hermes、通用推荐、广点通、游戏云都运行在Docker中;

此外,还有新浪混合云、美团云、爱奇艺等等主流互联网厂商都已经大量部署Docker,并且规模仍在快速膨胀。

除了企业内部业务Docker化,各大互联网公司也提供基于Docker的云计算服务,例如亚马逊提供的AWS EC2 Container Service,谷歌提供的Google Container Engine,阿里云平台集成了Docker企业版,青云提供的Docker容器平台、网易的蜂巢公有云等等,这些服务提供容器服务外,也提供完善的管理工具,云租户可以方便的通过可视化界面编排、部署应用,云计算容器商业服务已经成熟。

Docker在Cavium ARM64服务器上的最佳实践

Docker已经完善了对于ARM64架构的支持。目前无论开源社区还是Docker.inc构建的Docker,都可以很好地运行在基于ARM64平台的服务器上。下面简要的展示一下在CaviumThunderX以及ThunderX2服务器上的实践。

1. Docker安装

Docker安装非常简单,可以用apt-get或者yum标准化命令直接安装,如果采用的是Ubuntu,安装命令:

这样安装的是社区版本的Docker,也可以安装Docker.Inc的CE版,下载deb文件,Docker-ce_17.09.0~ce-0~ubuntu_arm64.deb,链接如下,对于不同架构的文件,有不同的子目录,ARM64架构的Image位于/arm64/目录下:

https://download.Docker.com/linux/ubuntu/dists/xenial/pool/stable/arm64/

然后通过dpkg命令安装。

2. 运行一个centos image

通过Docker pull直接获取一个Centos image

成功拉取Centos Image镜像后,就可以直接运行了,可以查看一下版本和目录:

跟一个普通的Centos看不来没什么区别,很有虚拟机的感觉。

3. nginx应用,运行两个容器实例,并实现两者之间的负载均衡。

可以通过如下命令启动两个nginx实例

同时配置host上的nginx,使其实现Round Robin调度的负载均衡,然后通过浏览器访问网页,就可以看到效果了,两个运行在Docker 容器中的Nginx服务器交替提供网页服务,如下:

Docker目前已有大量支持ARM64架构的Image镜像,支持众多应用,包括Web类应用,如Apache,Nginx,Tomcat;数据库类应用,如MySQL,MariaDB,DB2,SYBase;缓存类应用如,Redis,Memcached;文件系统类应用,如Hadoop,GFS,NFS,OPENFS,还有其他类别的主流应用等等,Docker在ARM64架构的生态也已经很成熟,将能越来越好的满足互联网客户在云计算各个领域的需求。

近期文章回顾

1.XPliant可编程交换芯片

2.XPlilant满足不断演进的技术需求

3.Cavium FastLinQ for Microsoft Azure Stack 最佳实践

4.使用Cavium FastLinQ 25GbE通过iWARP加速Live Migration

5.  最新Cavium XPliant哈希增强功能简介

6. HPC将迎来处理器变革新时代

7. OCTEON III多核SoC助力TP-LINK千元级企业路由解决方案

8. NVMe over Fabrics,PCIe链路之外的更优选择?

9. S2D软件定义存储与SMB网络



【声明】内容源于网络
0
0
Marvell
内容 495
粉丝 0
Marvell
总阅读427
粉丝0
内容495