大家在使用docker过程中,经常会遇到一些常见问题。为此,希云特意为大家分享:一位来自docker公司的实施工程师Harish Jayakumar,在他演讲过程中被问及的问题和回答。
最常见的场景是解决开发,测试,生产之间环境的不统一,持续集成或持续部署的难以开展几乎是所有运维和开发团队之间都会出现的问题,Docker可以解决这些问题,就正如演示过程中看到那样。很多组织目前也正在从以往庞大一体的应用架构向微服务架构迁移,Docker也可以帮助他们完成这个迁移。
实际上这个例子里刚好是相同的URL,它可以是这个swarm集群里的任意两个,你可以执行<code>docker ps</code> (在我的例子里是<code>docker-swarm ps</code>) 去获取到实例的URL,然后加载你的应用。在这个例子里,URL是我在Amazon EC2上跑的端口为5000的实例。
DTR是作为多服务/多容器的应用部署,它是由6个不同的容器组成。所以,是的。
你需要做的是使用“- link”选项去把两个容器与对方链接起来。你也可以用 Docker Compose 。另外用 libnetwork 也能使容器间能更简单的实现无缝通信。
这要看他们在Docker学习曲线中的哪一步。有些刚接触的人会问诸如容器与虚拟机之间的区别之类的问题。
基本上可以认为虚拟机是硬件级的虚拟机,而容器是系统级的虚拟化。对于容器来说,资源不需要被一个完整的系统占用,你只需要把应用所需的组件封装进容器中,可以把它当作是一个刚刚好满足需求的操作系统。而对于虚拟机来说,每个虚拟机的资源都需要被整个操作系统以及里头的应用占用。这是一个很大的不同。
另外有人会问我怎样可视化地管理大规模的容器。 在几个月前的DockerCon上,我们聊过一个叫Orca的项目,它是一个管理窗口的编排平台。
在开发,测试和生产环境的持续集成或持续部署,如果你还没开始,你可以下载,或者让你的开发人员下载Docker来尝试一下。开发人员可以打包他们的代码以及相关依赖,并推送进一个镜像中,然后让测试人员拉取这些镜像用来测试,生产环境的场景也是一样。
使用Docker你可以缩短开发周期,得到更多的可发布版本,可重用的镜像,更快的迭代,并真正快速的部署应用。这些都是能直接看到的收益和节源。你可以在这个演示中看到,GILT公司和BBC新闻都已经得益不少,他们得以更快的更新,从而发布更多的版本,并且把庞大的应用架构重构为微服务,这样提高了他们产品的可用性。
Docker容器能根据需求快速灵活地扩容和缩容,这让你能更有效率的使用现有计算机资源,更好的分配服务器密度。
不能。Docker容器需要运行在Linux的宿主系统上。另外,在下一个Windows Server版本,Windows Server 2016上,Docker容器也能运行。在Mac上你可以起一个Linux虚拟机,在虚拟机里运行Docker。在演示中我们见到的容器是运行在Amazon EC2实例上的。
开发团队考虑使用Docker时,在网络策略和安全方面我们应该考虑什么?在多租户的场景下,有没有一些必要的措施去隔离开不同的容器?
Docker容器提供了一个额外的隔离层,以使你的环境默认就更安全。在底层,Docker使用namespaces,capabilities和cgroups提供安全机制。在 docker.com/security 上有几个视频,是了解Docker安全相关的很好的入门,上边还有Docker的安全白皮书涵盖Docker安全相关需要考虑的问题。
对于网络来说,现在你能做的最多就只有从基础设施着手——建立一个单独的VLAN,使多个主机上和同一台主机上的容器都能相互通信;你也可以建立多个子网,隔离开不同子网间的容器不能相互通信。我也推荐了解一下 libnetwork ,它将会是下一个Docker引擎的一部分(1.9版本)。
希云( https://csphere.cn )提示:Docker1.9正式版,已经发布!可以支持overlay网络实现多主机网络通信。
欢迎申请试用希云cSphere1.0版本,此版本不仅解决跨主机通信,更可以固定容器ip地址,以及创建容器时手动指定容器ip地址。
如果想亲自操作,请观看 免费培训视频 ( http://csphere.cn/training )