What is docker
[Docker](https://www.docker.com/what-docker)官网上有对docker的解释——software container platform(应用软件容器平台)
具体解决的问题:突破“works on my machine”的限制让各个工作者可以协同编程.让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。开发者轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
web应用的自动化打包和发布;//这是我运用的主要方面
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境
什么是容器:
容器作为一个标准化的单元来生成、装载、部署已经打包好的程序。容器是一个轻量级的、独立的、可执行的,包含了运行一个程序所需的所有环境、配置。
容器的几大属性:
- lightweight 运行在单个机器上的docker容器都一起共享那个机器的操作系统内核。它可以快速启动,并且只需要消耗小计算量和存储量。这种容器的镜像由文件管理系统组织且共享文件。这个最小的镜像能做到非常快速得进行操作。
- standard docker的容器都是基于开源的标准、运行在all major Linux distributions, Microsoft Windows, and on any infrastructure including VMs, bare-metal and in the cloud
- SECURE 安全,docker容器独立得运行应用程序在底层的结构中。docker提供最强大的default isolation去限制app运行在一个单一的容器里而不是一个完整的机器上。
比较容器和虚拟机:
- 容器和虚拟机都有相似的资源独立和可配置的好处,但是功能不同,因为容器提供操作系统会代替计算机所需的硬件结构,容器更便携、高效。
-
这两张图可以很明显得看出容器和虚拟的不同是在配置又有docker的系统中将底部的操作分层统一了容器中只需提供app执行所需的环境。由docker提供平台,连接主机的操作系统,并且和底层串联起来。不用创建多个系统,消耗更小的容量。VM的启动还受牵制于boot。
当然两者可以协调一起运用