Docker 引发了交付方式的变革,从交付代码和文档变成交付Docker镜像乃至交付编排模板。
容器服务让咱们能够专一应用自己功能的开发,而无需关注基础设施、应用部署、管理等等一大堆棘手的问题。html
愈来愈多的公司开始考虑使用Docker的方式部署和管理应用,以下降运维的成本。
同时,阿里云容器服务团队正在积极的推动国内 Docker 的发展,阿里云在云栖大会上宣布和Docker公司战略合做,将为Docker Hub提供中国运营的基础服务docker
说易行难,真正开始的时候又不知道具体该作什么,会遇到哪些坑?
日前,阿里云容器服务团队进行了一次线上的圆桌互动,如下是提炼和总结数据库
来自用户的总结:
我的理解:具体到 Docker 技术在测试领域的应用,能够体如今:
1)快速搭建兼容性测试环境tomcat
从Docker的镜像与容器技术特色能够预见,当被测应用要求在各种Web服务器、中间件、数据库的组合环境中获得充分验证时,能够快速地利用基础Docker镜像建立各种容器,装载相应的技术组件并快速启动运行,测试人员省去了大量花在测试环境搭建上的时间。服务器
2)快速搭建复杂分布式测试环境网络
Docker的轻量虚拟化特色决定了它能够在一台机器上(甚至是测试人员的一台笔记本电脑上)轻松搭建出成百上千个分布式节点的容器环境,从而模拟之前须要耗费大量时间和机器资源才能搭建出来的分布式复杂测试环境。架构
3)持续集成运维
Docker能够快速建立和撤销容器,在持续集成的环境中,能够频繁和快速地进行部署和验证工做dom
精彩问答:
hyper_x问:如何平滑迁移到Docker ?合适的容器调度管理平台有推荐吗?多主机跨容器通讯及性能问题怎么处理?容器的监控及故障迁移恢复怎么操做?socket
专家答:
迁移docker的时候,建议“慢慢来”,先把一些边缘的、无状态的应用放在容器里运行,核心服务先不动,稳定以后再逐渐开始迁移重要应用。
迁移过程当中,可能会涉及到对应用访问模式的改造,在条件容许的状况下,好比业务压力不是这么大,能够作一些改造。好比两个应用原来是部署在一台机器上,经过unix domain socket通讯,切换到Docker以后,推荐每一个容器只跑一个应用,可是在过渡期,作一个大镜像,里面放两个应用也不是不能够
容器管理方面,目前主要三个方面:k8s, swarm和mesos,很难说哪一个更好,您能够都尝试下。阿里云的容器服务采用的是swarm的模式,集成了阿里云的一些基础服务:日志、监控、存储等,在调度等方面作了不少优化,你也可使用看看。
容器跨主机通讯,Docker自己提供了overlay network,也有一些开源的软件 Flannel calico,按照底层网络模式分,overlay flannel weave等是vxlan的方式,须要对packet封装和解封,性能上差一些,calico 使用 BGP 协议直接路由,可是对底层的网络模型要求较高。容器服务提供了针对阿里云的VPC的 Docker 插件,容器之间的数据包不须要封装操做,性能几乎和VPC内两台ecs通讯性能同样。
故障迁移和恢复,这个在容器服务中是原生支持的。监控方面能够参考下咱们的帮助文档: https://help.aliyun.com/docum...
rg小恒问:
1.Docker的方便我以为是敏捷交付以及持续集成,在对集群宿主机的资源利用上比虚拟主机方便一些,譬如容器迁移比vm迁移方便,我想问一下容器对于资源利用比直接跑在vm上是否是要好一些
2.假如个人应用是基于tomcat的,挂载volume是用宿主机的磁盘好一些仍是用nas,发布新版本(譬如更换war包)有什么好的方法,是我手动去替换volume里边的war包仍是触发自动构建从新起一个tomcat容器,若是我只是想替换tomcat应用容器中的某些jsp文件呢
3.用阿云的容器服务的时候,集群默认会有etcd容器仍是须要本身起一个
4.容器的监控是用阿云的监控便可仍是须要本身另寻他路,譬如用谷歌的cadvisor等
专家答:
更细粒度的资源管理能够提升资源利用率,从物理机到虚拟机再到容器,资源的粒度在不断细化。一台VM上启动多个容器能更充分的利用VM的资源,配合云服务和自动调度等手段,能够进一步提供资源利用率和下降资源成本。
docker推崇的作法是不可变基础架构,变动的是镜像而不是容器内的文件,因此每次发布,要用新的war包构建一个新镜像,再用新镜像启动应用。即便不说容器,在Java Web开发里也不建议在生产环境里热更新JSP,生产环境要求的是可靠和高性能,替换jsp这种方式只能用在开发测试环境。
容器服务有etcd服务,但主要用于Docker daemon以及容器服务自身的agent,若是是您本身的业务上用到etcd,能够本身起一个。
监控方面,容器服务默认就支持了。您能够在控制台页面上查看每一个容器的实时监控信息,这些数据也会自动同步到云监控,不须要额外配置。另外若是您本身有监控系统,也能够经过配置把全部的监控数据发送到您的监控系统里。能够参考监控的文档:https://help.aliyun.com/docum...
用户问:有没有镜像制做的最佳实践能够参考?
专家答:
使用 Dockerfile 制做镜像,不要用 docker commit
Dockerfile放在一个专门的目录里,其中只包含制做镜像所需的文件(若是分离构建和镜像制做,这里只放构建后的包,不要放源码)。
必要的时候可使用.dockerignore
减小层数量,Dockerfile 里用 RUN 的时候,一个RUN后面跟多个命令,命令之间用&&分割
常常变化的内容放在 Dockerfile 的后面,前面不变的部分能够直接用 Cache,下降 Build 镜像的时间
更多内容欢迎关注 阿里云容器服务官方页面,https://www.aliyun.com/produc...