什么是Docker?
什么是Docker?
Docker允许我们打包我们的应用以及其所有的依赖包到一个标准化单元中用于软件开发。
Docker容器将一块应用打包到一个完整的文件系统中,在该文件系统中包含了该应用要运行的所有要求:代码,运行时,系统工具,系统库 - 任何你安装在服务器上的东西。这就能保证他将会以同样的方式运行,无论它运行在什么样的环境中。
Docker的特点
- 轻量
运行在单一机器上的容器共享相同的操作系统内核,所以他们能立即启动,并且更有效率的使用RAM。图片是由分层文件系统构建的,所以他们能够共享公用文件,使磁盘使用和图片下载更有效率。 - 开放性
Docker容器基于开源的标准,这使得容器能够运行在一些主流的Linux发行版上和支持每个基础设施的微软操作系统上。 - 安全性
容器隔离每一个应用和底层的基础设施,并且为应用提供一个保护层。
Docker和虚拟机有什么不同?
容器拥有与虚拟机相同的资源分离和分配的有点,但是一些不同的架构方法使得容器更加轻型和有效率。
虚拟机
每一个虚拟机包含应用,必要的二进制和库,以及一个完整的用户操作系统 - 每一个虚拟机可能需要10Gb的大小。
容器
容器包含应用和其所有的依赖包,但是与其他容器共享内核。他们在宿主操作系统中,在用户空间以分离的进程运行。他们也不与任何特定的基础设施绑定 - Docker容器运行在任何计算机,任何设备和任何云中。
容器怎么帮助我们构建更好的软件?
当我们的app在Docker容器中的时候,我们不需要担心为每一种语言设置和维持不同的环境或不同的工具。我们只需专注于创建新的也行,修复问题和交付软件。
- 加快开发速度
减少设置开发环境浪费的时间,分拆新实例,并且复制产品代码用于本地运行。使用Docker,我们可以非常简单的复制生存环境并且运行任何新的运行着Docker的端点。 - 增强创造力
Docker容器的隔离能力消除了使用”认可的”语言栈和工具的担心。开发者可以使用最好的语言和工具用于他们的应用服务,而不必担心导致冲突。 - 消除开发的不一致性
通过打包应用以及他的配置和依赖包,并且作为一个容器交付,应用会一直按照本地设计工作,无论是在其他应用中,在测试中还是在产品中。不用再担心安装相同的配置到一个不同的环境中。
分享简单,并且应用协作
Docker创建一个用于开发和系统管理的通用框架,用于在分布式应用中工作。
发布和共享内容
在Docker hub中你的团队存储,发布并且管理你的Docker镜像。镜像更新,改变和历史被自动通过你的组织共享。
更简单的与其他人分享您的应用
向其他人或下游的团队交付一个或多个容器,而补习担心不同的环境依赖导致的问题。其他团队可以非常简单的连接或测试你的app,而不用学习或担心他是如何工作的。
更快的交付更多的软件
Docker允许你动态的修改你的应用,例如添加新的功能,扩展服务来快速改变问题区域。
交付7X多
Docker用户在他们的环境中部署了Docker之后,平均交付7X多的软件。更频繁的更新向您的消费者提供了更多的价值。
快速扩展
Docker容器能够在秒级别内加速或减慢,这使得其在任何时间扩展应用服务来满足用户需求变得更加简单,然后仅仅简单的减慢这些容器满足,当你需要资源的时候才使用这些资源。
修复问题更加简单
Docker使得识别问题并且分离问题容器变得更加简单,快速的回滚使其发生必要的修改,然后更新的容器到产品中。容器之间的隔离相比传统的软件模型使得这些改变有更少的破坏性。
现在我们就可以专注于构建app了。