镜像与容器类似于类与对象。Docker image用于创建 Docker Container;Container是独立运行的一个或一组应用;Docker Registry用来保存镜像。大部分情况下,docker服务端和客户端运行在一台机器上。
docker容器和虚拟机的区别
(1)根本的区别在于是否有 物理硬件资源虚拟化
公司生产环境大多也是虚拟机,虚拟机将物理硬件资源虚拟化,按需分配和使用,虚拟机使用起来和真实操作系统一模一样。但由于虚拟机非常庞大,同时对硬件资源的消耗也大。宿主机操作系统之上运行着虚拟机,虚拟机上运行着客户操作系统,客户操作系统之上运行着用户的应用程序,一台服务器 80% 的资源开销都花费在了硬件虚拟化和客户机操作系统本身。openstack能够以10台/min的速度创建虚拟机。
如果采用 docker 容器技术,宿主机操作系统之上运行着docker引擎,docker引擎中就能运行用户的应用程序。
如果说虚拟机是操作系统级别的隔离,那么容器就是进程级别的隔离。 可以想象这种级别隔离的优点,无疑是快速的,节省资源的。
CPU:docker和宿主机操作系统使用同一内核。
文件系统:docker的文件系统使用物理服务器的文件系统,但做了隔离,看上去每个docker容器都有自己独立的文件系统;
网络:docker建立了虚拟网桥设备,每个docker容器通过虚拟网桥设备连接网络。
docker直接使用物理服务器的CPU、内存、硬盘,并不对硬件进行虚拟化,因此没有硬件虚拟化和客户机操作系统占用的资源消耗,每一台虚拟服务器的性能接近于物理服务器性能。
(2)表现出来的差异
1 节省系统硬件资源,因为不需要硬件虚拟化和客户操作系统。
2 应用启动快速,部署环境快速,因为容器里面的应用,直接就是宿主机系统上的一个进程,而不是虚拟机内部的进程。
3 容器体积小,因为容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包。