Docker是一个开源项目,通过在Linux上提供操作系统级虚拟化的附加抽象层和自动化层,可以自动在软件容器内部署应用程序。
Docker使用Linux内核的资源隔离功能(例如cgroup和内核名称空间)来允许独立的“容器”在单个Linux实例中运行,从而避免了启动和维护虚拟机的开销。 ( 维基百科页面 )
看来Docker最近已经接管了编程领域。 因此,我们收集了10个很棒的Docker教程,以帮助您轻松进入框架并帮助您增强自己的DevOps项目! 踢吧!
容器并不是什么新鲜事物,但是实现它们总是比需要的要复杂一些。 Docker在简化容器方面取得了长足的进步,并从此引爆了整个世界。 让我们看看为什么。
Docker不是很老。 2014年5月,当我写了一篇煽动性博客文章Docker是Heroku Killer时,它即将达到1.0版本。几周后的后续行动称为Tempering My Docker Enthusiasm。 旁注,Heroku仍然很棒,我对Docker的热情很强。 Heroku现在也支持Docker。
最近,我在构建可信任的可重复过程上花了很多心思。 我认为,一个快乐的黑客出于代码乐趣而破解代码与一个快乐的黑客提供可以依靠的东西之间存在着区别。 是什么让您成为专业人士,所以它是一个稳定,安全的过程,可让您不断发展而不会出现退化。
作为此过程的一部分,我将重点更多放在持续集成和测试技术上。 我认为,拥有一个良好流程的很大一部分就是要拥有一个可以控制,轻松配置和复制所需环境。
持续交付就是通过短时间生产可靠的软件来降低风险并更快地交付价值。 正如马丁·福勒(Martin Fowler)所说,在以下情况下,您实际上可以连续交付:
- 您的软件可以在其整个生命周期内进行部署。
- 您的团队优先考虑使软件可部署而不是使用新功能。
- 每当有人对其进行更改时,任何人都可以获取有关其系统生产准备情况的快速,自动化的反馈。
- 您可以按需将任何版本的软件执行按钮式部署到任何环境。
如今,Docker一直是炒作,并且有这样的说法,许多人想知道如何才能加入并利用使Docker如此受欢迎的任何优势。 就在六个月前,那时我们才开始使用Docker并尝试使其适应我们的流程。 短短几个月后,我们知道我们喜欢它并希望以这种方式运行应用程序,但是我们在某些Docker开发工作流中苦苦挣扎。
作为开发团队的经理,我喜欢在应用程序的整个生命周期中使用相同的流程和技术。 当我们使用Chef在AWS OpsWorks上运行应用以配置服务器和部署应用时,我们使用Vagrant和Chef在本地运行相同的配方以构建我们的开发环境。
本文的目的是探索1.9版中引入的新Docker网络功能。 我们将它们应用于Docker Swarm集群。 出于实践目的,我们将容器部署到使用Vagrant在本地创建的Swarm集群中,并将Consul作为服务注册表运行,将Registrator作为工具运行,以监视Docker守护进程并注册/注销我们运行/停止的容器。 合并后,领事和注册人将充当我们集群中的服务发现者
Docker多主机联网允许您创建虚拟网络并将容器连接到它们,以便您可以创建适合您的应用程序的网络拓扑。 该博客将展示如何在Docker Compose中使用它。
带有Couchbase,Java EE和WildFly的CRUD Java应用程序介绍了如何使用Java EE应用程序在Couchbase中的数据存储区上提供CRUD / REST接口。 它需要手动下载并运行WildFly。 该博客还使用了使用Docker的Couchbase服务器,并需要手动配置来加载旅行样本存储桶。
Java开发人员和DevOps专业人员长期以来一直在努力实现企业Java应用程序的自动化部署。 这些应用程序的复杂性通常意味着,每次在DEV / TEST环境中部署应用程序时,都必须重新配置应用程序依赖性和外部集成。
许多解决方案宣传“一次建模,随处部署”消息,以进行应用程序部署。 但是,实际上,总会有一些复杂性,例如,很难在本地vSphere虚拟环境和AWS环境中重用应用程序模板。
尽管应用程序的可移植性(即能够在任何Linux主机上运行相同的应用程序)仍然是采用Linux容器的主要驱动力,但另一个关键优势是能够优化服务器利用率,以便您可以使用每一个计算。
当然,对于PROD之类的上游环境,您可能仍想为工作负载分配足够的CPU和内存–但是在DEV / TEST环境中(通常代表组织中大多数计算资源消耗),优化服务器利用率可以节省大量成本。
先前的文章主要关注Docker的持续交付和容器。 在与Jenkins,Docker和Ansible的持续集成,交付或部署中,我解释了如何持续构建,测试和部署打包到容器中的微服务,并在多台服务器之间做到这一点,而无需停机并具有回滚功能。 我们使用Ansible,Docker,Jenkins和其他一些工具来实现该目标。
现在该扩展我们在前几篇文章中所做的工作,并在任意数量的服务器上扩展服务。 我们会将所有服务器视为一个服务器场,并不要将容器部署到预定义的位置,而是将容器部署到运行最少数量的容器。 与其将每个服务器视为我们部署的单独位置,我们将所有服务器视为一个单元。
有时需要花些力气去思考。 这对每个开发人员都是一个好习惯,即使您仅花费10%的时间,并使用新的和值得注意的技术,您也将获得经验并扩大您的知识。 从那以后我一直想研究Scala和Akka。 在许多会议议程上,这两个众所周知的老熟人。
但老实说,我从来没有觉得需要重新审视。 当我开始更深入地研究微服务及其相关概念时,这种情况发生了很大变化。 让我们开始,看看里面有什么。
请确保转发此消息,让您的社交粉丝知道!
我读10个真棒#Docker教程来启动我的#DevOps项目在@javacodegeeks https://t.co/IzZ5RDXW4R pic.twitter.com/rGowBfORYf
— Java Code Geeks(@javacodegeeks) ,2015年11月30日