返回 登录
0

Docker 容器实践精华问答集锦

上周,Ghostcloud精灵云受开源中国社区邀请参加了Docker容器实践相关的线上答疑活动,为Docker技术爱好者和使用者解答了在Docker技术实际运用中遭遇的众多难题。活动一经上线,就引来了广大Docker技术爱好者和学习者的强烈关注,上线仅一个星期,就吸引了5200+人次阅览,并收到了50+个提问。所提问题全部来自Docker容器技术实际操作,其中不乏经典“疑难杂症”,为了让大家拥有更快速高效的阅读体验,小GO特整理了本次活动的精华问答,希望可以给各位Docker容器使用者们带去帮助。
图片描述
开源中国社区线上答疑盛况

问题一:请问如何做好容器的安全性管理?跨主机容器间通信如何来管理(比如:ip 分配,划vlan 等)?k8s对于容器的监控和集群管理,该如何来做?

精灵云:关于安全,容器自带一些安全技术比如Capability用于限制容器所拥有的能力,也就是执行某些系统操作的权限,也可以根据需要对容器的能力进行增减。Namespace为每个容器提供隔离的系统运行环境,包括pid, network, uts, ipc, mount。Cgroup主要用于对容器所使用的资源进行限制,包括cpu,memory。技术措施上,对权限和资源进行限制,用cap-drop的方式来削减能力,利用cgroup来为容器添加cpu,和memory限制。
跨主机的通信,精灵云基于Calico网络上,做了二次开发,可以实现容器跨主机间的IP直接访问,并支持同一集群的多子网创建。
关于容器的监控和集群管理。精灵云提供专门的配置接口和监控界面,让用户可以很方便的了解容器的资源使用情况,日志的实时收集和分析。通过DashBoard可以一目了然的了解集群中所有主机的资源消耗情况。也可以周期性地对容器健康状态进行监控。

问题二:请问现在在生产环境Docker容器内运行应用可不可以使用Root权限,还是都应该建一个低权限用户再运行进程?
精灵云: 容器有一个特权选项,如果没有那个选项,应用程序在容器里将不能做一些操作,比如重启容器,或者挂载其他文件系统等。并且,微服务的设计理念是一个容器跑一个应用程序。所以应用可以并且应该在容器里使用root权限。

问题三:请问Docker对于web开发有什么帮助?
精灵云:可以让Web的设计基于微服务框架,这样可以针对某一个小服务进行单独升级。Docker容器对Web服务的开发,部署,测试,升级等DevOps操作,跟传统开发模式来说都有质的提升。比如,部署稳定快捷,测试环境和生产环境的一致性,升级不用停服务等。

问题四:请问有没有自动扩展Docker的方案?如业务高峰自动加Docker实例,业务少时就销毁。
精灵云:精灵云的自动伸缩功能,可以在容器的CPU和内存的平均使用率达到一定阈值时,自动增加同一服务的容器,而在容器的平均资源消耗下降时,对容器数进行缩减。

问题五:请问镜像多版本如何维护? 网络性能上面的问题如何有效调优?
精灵云:通过tag来实现,具体策略结合实际环境制定标准。网络性能调优,还是看使用的是什么网络模式,有没有第三方网络插件的介入。一般来说,网络调优需要做性能测试,以及对比各种模式下的速率,再来选择一种消耗比较小的一种,以及优化网络拓扑结构。

问题六:如何解决国内 Dockerhub 不能访问的问题,对学习 Docker 和使用 Docker 带来的极大的不便啊,有没有办法解决这个问题。
精灵云:可以使用Ghostcloud EcOS,单机版免费,自带常用镜像。:-D

问题七:Docker的发展趋势是怎么样的?会不会越做越臃肿?
精灵云:Docker容器正在被越来越多的公司认可,从最初的只是作为开发工具,到慢慢具有很多功能和能力部署在生产环境的工具。从Docker自身来说,预测容器将会在网络、存储或者监控方面有更多地选择,生态环境将会越来越好和成熟。就精灵云公司自身的经验和客户要求看,目前国内很多传统公司的应用和数据业务也正考虑逐步采用微服务的方式,迁移到Docker上去。另一方面,Docker在推行DevOps上也越来越重要。所以Docker容器会发展得越来越壮大和成熟,但不是臃肿。

问题八:Docker批量管理怎么做?用脚本吗?有什么更好的方案吗?
精灵云:建议试试精灵云的EcOS(下载试用地址:https://www.Ghostcloud.cn/ecos/),它可以批量地管理容器。或者一些开源的,如Rancher和Kubernetes也可以。

图片描述
EcOS平台架构

问题九:Docker环境是否会有系统一样的,文件数问题,内核参数问题?需要做内核优化和文件数优化等设置吗?
精灵云:如果系统能够安装上 Docker 并能正确的运行,那么内核已经提供了 Docker 所需要的特性了;至于内核、文件数等的优化就需要和具体的 Docker 容器中运行的业务相关,例如:业务程序需要打开大量的文件描述符,那么可能需要对文件数做一个优化。

问题十:在NT上装了Docker,把Mysql装到母机上了,在容器里链接这个Mysql,必须用母机的IP吗?如果母机是动态IP的话,有没有什么链接的好办法。
精灵云:现在MySQL运行在容器里的方式已经非常成熟。使用精灵云的应用栈功能,每次容器里的IP会自动注册到我们的集群系统,而每次服务请求方,也能通过集群系统顺利找到MySQL服务,这个功能是不管MySQL 的IP怎么的。请参考服务注册,服务发现功能。

问题十一:中小企业通常生产环境都是运行在各种云厂商的容器中,那么应用在各种云之间的迁移是否方便?Docker有没有规范或方法来保证迁移能力?
精灵云:迁移容器同时涉及到了备份和恢复,我们可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中,首先我们将把容器备份为Docker镜像快照,然后,该Docker镜像被作为tar包文件保存到了本地,再需要拷贝或移动该镜像到我们想要的机器上,加载该镜像并运行需要的容器即可。
精灵云的EcOS2.0提供了Stack应用的备份与恢复。
图片描述
Stack应用

问题十二:可以让容器独占某个 cpu 核吗?
精灵云:Docker使用cgroup来限制容器使用固定的CPU或者一定范围的CPU资源,但不能限制其他容器或者应用程序不使用这个CPU资源。

问题十三:Docker也需要有场景来使用,哪些场景比较适合用Docker化?
精灵云:
1)微服务架构应用程序的部署;
2)对研发团队来说,可使用Docker来搭建开发测试环境;
3)DevOps。

问题十四: Docker有什么很好的监控系统吗?能推荐下嘛?
精灵云:有一些免费的和收费的软件,如:Docker Stats、CAdvisor、Scout、Data Dog以及Sensu。也可以试试精灵云EcOS的实时监控系统。

图片描述
EcOS企业级容器云管理平台

问题十五:Docker和宿主隔离怎么样?好像之前Docker有绕过的漏洞?是用什么原理隔离的?

精灵云:Docker和宿主机的隔离并不是完全的,比如/proc,/sys没有完全隔离,root用户未隔离,内核模块没有隔离等。如果黑客通过这些没有隔离的资源进行攻击是可行的。但总的来说,Docker社区和一些公司已经对Docker的安全性做了一些工作,比如文件系统级的防护,又或者Capability机制,所以Docker还是比较安全的。Docker是采用Namespace来做隔离的。更多信息,可在Docker社区里找找,很多关于Docker隔离性和安全性的讨论。

关于EcOS
由Ghostcloud精灵云全自主研发的EcOS平台,结合全球最新虚拟化云计算技术Docker,为企业研发、运维及新业务上线部署提供了一整套解决方案和管理平台。不仅帮助企业大幅削减成本和提升效率,更能帮助传统企业加速所需业务互联网化进程,也帮助互联网企业加快产品迭代,提高产品市场占有率。EcOS平台,能让企业高效适应当今IT大环境,接轨互联网+时代,开启云计算2.0时代。

了解更多Docker容器技术,可关注微信公众号“精灵云”或“godocker”

评论