**导语:**随着以Docker为代表的容器技术在国内的迅速发展,[容器云][1]也逐渐被广大开发者所熟知,但容器云(CaaS)相比传统的云主机(IaaS)在实际应用中还存在着一些鸿沟。为此,我们试图以通俗精炼的语言向广大开发者介绍容器的特点,应用场景以及优势等。【深入浅出容器云】系列文章是由时速云出品,本文是第二篇,欢迎大家不吝赐教。
容器服务 (Container Service)是一种高度可扩展的高性能容器管理服务,服务于应用的完整生命周期。通过Docker容器来运行或编排应用程序,您将不再需要安装、运维、扩展自己的集群管理基础设施。容器服务具有简单易用、灵活弹性、秒级部署等特点,通常具备以下能力:
###1)容器托管
提供大规模容器集群管理、资源调度、容器编排、代码构建,屏蔽了底层基础构架的差异,简化了分布式应用的管理和运维。
###2)服务发现
为每个服务提供二级域名和端口映射,服务之间可通过内网域名进行访问,不会受容器重启、迁移或扩展的影响。服务之间还可通过环境变量链接起来。
###3)存储卷
容器服务支持有状态和无状态服务。可将高可用、分布式存储卷直接挂载在容器上,并在容器重启、迁移过程中自动重新挂载。当容器重新部署时也会随着容器在不同主机之间迁移。
###4)弹性伸缩
容器服务的弹性伸缩通常于秒间对容器进行横向扩展。同时可对CPU、内存等负载数据进行实时监控,实现全自动/半自动弹性伸缩。
###5)负载均衡
提供四层、七层负载均衡将流量引导、分摊到服务每个实例,并根据容器状态自动对负载均衡进行实时配置,提高应用整体可用性及吞吐量。
###6)日志监控
提供全方位的日志监控,自动搜集容器输出日志,并可保留已中断的容器的历史日志。可对容器性能作全方位实时监控。
###7)灰度升级
灰度升级是指在升级过程中,在用户无感知的情况下做到不停机,平滑的升级。灰度发布可以保证整体系统的稳定。
###8)容灾容错
基于Kubernetes的容器云具有独特的容器仓技术,可以保证容器实例的副本数量即使在某个主机出错的情况下也能维持不变。
下面我们将通过实例,带你快速体验容器服务的魅力。
1.登录[时速云][1]后台,进入容器服务,点击“**创建**”按钮
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/2034205ecef938de482437d8663ad475.png)
2.在镜像来源中选择一个镜像,示例中选择的是PHP镜像,该镜像都包含了示例代码,并开放了SSH,您可以像操作云主机一样,使用 SSH 或 Putty 等工具连接容器,上传自己的应用代码。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/2b7e17796d0fae16d3e7169b66b835dd.png)
3.点击“**部署**”后,进入到容器基本配置页面,输入“**服务名称**”,选择“**容器配置**”(建议512M内存以上),勾选服务类型“有状态服务”,有状态服务支持将外部存储卷挂载在容器上,从而实现数据的持久化。存储卷里的内容通常存储用户的应用代码。默认目录为“/app”
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/a1402ee395f20a49e38deb4df7579415.png)
下图为存储卷配置,选择一个已创建的存储卷的情况
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/5581897e5965c69a4ddb782282361afa.png)
下图为北京一区默认的存储卷,无需手动创建的情况
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/99ca92cbd922c3637077c2434656e7b5.png)
下图为存储卷配置,在没有创建过任何存储卷的情况下,可直接创建一个存储卷
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/067a055e6c5972a12728b0621e600650.png)
3.在“**高级设置**”中,可以设置容器的SSH密码(默认是随机密码,用户名为root,从日志中可以查看到),以及其他参数或者端口设置。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/4058b0e001a4438d15c80928353580d1.png)
4.点击“**创建**”,稍等数秒,容器便创建成功了。如下图所示:
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/3a40d2594797d2c5569fcb4c97cb2a72.png)
打开“**服务地址**”,我们将看到示例的应用:
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/d8b85833c5837d9ef9a425aa6f282d10.png)
5.您可以选择自己熟悉的工具,比如Shell或者Putty等连接容器。 进入“**容器详情**”里,选择“**端口**”标签,可以查看“**22**”端口对应的服务地址:
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/ffb1cfcce4b02b413e282bfac4ad1a32.png)
在“**日志**”里查看生成的密码:
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/4a61a99b53cff77070f4c81e0813ab58.png)
连接容器,例如:
ssh root@<hostname> -p <port>
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/47e40b5bcdb0bcbe7bca6b173aa17b52.png)
6.上传应用代码至 “/app” 目录下。可使用“**scp**”命令或其他工具上传。
scp <file.zip> -p <port> root@<hostname>:<path>
7.容器的常用操作
1)弹性伸缩,动态调整实例的数量,多个容器实例间本身就是一个负载均衡集群,当面对海量用户访问时,也能轻松应对,而无需再手动添加机器,并搭建负载均衡集群。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/447279003f0f326fb60cce11a5d731e5.png)
2)灰度升级,是指在升级过程中,在用户无感知的情况下做到不停机,平滑的升级。灰度发布可以保证整体系统的稳定。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/9e1e7f0d70787c4129804c841b6f1382.png)
3)重新部署,允许您重新选择镜像的版本进行部署。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/fd1820d0e4dea7bcd2f2d8afd67e785c.png)
4)更改配置,支持动态调整容器的CPU,内存等配置。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/b754ac6506531afbcf72a38afc54e0a9.png)
5)使用Web-terminal,可以快速探索容器内部,对于开发调试,有web-terminal十分的方便。
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/9bb10e40a1977cd28aaacf184bf9ba6e.png)
6)绑定自定义域名
![alt 文本](http://open-huangqgiu1l.tenxcloud.net/uploads/article/20160304/df984f15faa8169993773790c96d9b11.png)
[1]:https://www.tenxcloud.com/