Docker是一种容器化运行技术或平台,基于Linux内核的cgroup和namespace,对进程进行了封装隔离,属于操作系统层面虚拟化技术。它以容器的形式将你的应用程序及所有的依赖项打包在一起,以确保你的应用程序在任何环境中无缝运行。
传统虚拟化技术是虚拟出一套硬件后,在其基础上运行一个完整的操作系统,再在此系统上运行所需的应用进程。而Docker技术是容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核,而且也不虚拟出硬件。因此,相对于传统的虚拟化技术而言,Docker更加轻便。
说人话:
Docker是平台,Docker的虚拟机(即容器),在Docker平台上运行
Docker容器有自己的虚拟环境,不管在什么系统中运行,环境都完全一致
为什么要使用docker?
1.环境一致
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。
2.更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。
3.更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。
4.更轻松的迁移
由于 Docker 一致的运行环境,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。
5.更轻松的维护和扩展
Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。