在线网站
官方论坛:https://forums.docker.com/
维基百科:https://en.wikipedia.org/wiki/Docker_(software)
docker是什么
docker是业内领先的软件装箱平台,它可以将用户的应用及依赖(软件部署环境)打包进一个可移植的标准单元(容器)中。docker容器可以将一个包含运行时所需的任何依赖的完整文件系统打包成一个软件,这包括:代码、运行环境、系统工具和系统库等等(可在服务器上安装的任何东西)。docker可以保证软件总是运行一致,而不用花费精力在其运行环境上。docker主要特性有如下这些:
• LIGHTWEIGHT(轻量级)
运行在同一台机器上的多个docker容器共享同一个操作系统内核,它们可以迅速启动并使用较少的内存资源。Image(镜像,其实例即容器)将从分层文件系统中构建,并共享相同文件,这使得磁盘使用和Image下载更加高效。
• OPEN(公开的)
docker容器是基于所有公开标准创建,这使得容器可以运行所有主流的linux和windows系统之上。
• SECURE BY DEFAULT(默认安全)
docker容器完全使用沙箱机制,它们可以将应用互相隔离运行的同时将应用从下层运行环境中隔离,并且为软件提供一个额外的保护层。
docker与虚拟机的异同
docker容器和虚拟机之间有着相似的资源隔离和配置效益,但docker不同的架构方式使得容器变得更便携,更高效。
虚拟机通常包含应用程序、必须的二进制包和库,以及一个完整的用户操作系统。完整的虚拟机通常可以占据数万GB的存储空间。
docker容器通常包含了应用程序和所有相关的依赖,但容器之间共享了内核。容器在宿主机操作系统中将在用户空间中作为进程运行。docker容器并不绑定任何的基础设施:它们可以在任何电脑上运行,可以在任何基础设施上运行,可以在任何云环境中运行。
使用docker构建更好的软件
使用docker容器可以迅速跳过开发环境和语言相关工具的安装和维护。使用者只需要专注于创造新特性、修复问题和交付软件。
• ACCELERATE DEVELOPERS(加速开发)
使用docker容器可以避免花费数个小时来开构建开发环境、重新建立新实例和拷贝产品代码到本地来运行。使用docker容器,用户只需要使用其生产环境的拷贝,然后将其运行在任何带有docker引擎的终端上即可。
• EMPOWER CREATIVITY(提高创造性)
docker容器的隔离能力可以将开发者从约束中解放出来:开发者可以使用更好的开发语言和工具来构建应用服务,而不用担心导致内部的工具运行冲突。
• ELIMINATE ENVIRONMENT INCONSISTENCIES(消除环境的不一致性)
将一个应用和它的配置文件、依赖打包到一个容器中可以保证应用在任何环境中总是按照设计意图运行:本地运行、在另一台机器中运行,在测试环境中运行、在生产环境中运行。用户可以不再担心在不同环境中不得不安装相同的配置的问题。
使用docker进行共享合作
docker为在分布式应用中的开发者和管理者创造了一种通用框架。
• DISTRIBUTE & SHARE CONTENT(分发和共享内容)
可以与你的团队在Docker Hub中存储、分发和管理docker的image(镜像)。Image的更新、修改和历史版本将自动在你的团队中自动共享。
• SIMPLY SHARE YOUR APPLICATION WITH OTHERS(共享你的应用程序)
交付你的docker容器而不需要担心环境的依赖性导致应用程序出现问题。其他团队可以很容易连接或测试你的应用而不需要花费太大的精力来学习你的应用是如何工作的。
使用docker使得软件发布速度更快,规模更大
docker技术允许用户动态修改其应用程序,添加新的功能,缩放服务范围,迅速修改问题区域。
• SHIP 7X MORE
docker用户在其环境中部署完docker后平均上将发布7X以上的软件。更加频繁的软件更新为客户提供额外的价值。
• QUICKLY SCALE(快速缩放服务规模)
docker容器可以在数秒时间内增加和减少,使得其更加容易缩放应用服务规模来满足高峰客户需求,然后在需求减少时候减少运行的容器个数。
• EASILY REMEDIATE ISSUES(更容易修复问题)
docker技术使得定位问题变得简单:隔离有问题的容器,迅速回滚进行必要的修改,然后将新的容器放入生产环境中。与传统软件模型相比,容器之间的隔离使得这样的修改具有更低的破坏性。