Docker 是 Docker.Lnc 公司开源的一个基于 LXC 技术之上搭建的 Container 容器引擎,Docker 源代码托管在 Github上,Docker 是基于 Go 语言开发的并遵从 Apache2.0 协议开源。
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),学习仅使用社区版就可以了。
Docker 的思想源于集装箱,集装箱解决了什么问题呢?在早期运输货物需要不同分类的船,例如运输水果的船,运输生活用品的船,有了集装箱后,在大船上,可以把货物分类到不同的集装箱中,水果一个集装箱,生活用品一个集装箱,它们之间互不影响,只要把货物封装好集装箱里,就可以把不同类的货物一起运走。
通过 Docker logo 也可以看出所以然来,这是一只鲸鱼,它托着许多集装箱。我们可以把宿主机可当做这只鲸鱼,把相互隔离的容器可看成集装箱,每个集装箱中都包含自己的应用程序。
Docker 是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用 Linux 容器来部署应用程序称为集装箱化。
特点 | 描述 |
---|---|
灵活 | 即使是复杂的应用程序也可封装。 |
轻量级 | 容器利用并共享主机内核。 |
便携式 | 您可以在本地构建,部署到云上并在任何地方运行。 |
可扩展性 | 您可以增加和自动分发容器副本。 |
可堆叠 | 您可以垂直堆叠服务并及时并及时堆叠服务。 |
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
轻量级
开放
安全
Docker 是一个轻量级的操作系统虚拟化解决方案。
Docker的主要目标,用官网的概括来说就是 “Build,Ship and Run Any App,Anywhere”:编译,装载任何App,在任何地方都可以运行,我们大概理解就是一个容器,实现了对应用的封装,部署,运行等生命周期管理,只要在glibc的环境下,到处都可以运行。这点在企业的云服务部署是有非常广泛的应用前景。
Docker具有轻量级、开放和安全的特点。