容器技术起源于Linux,是一种内核虚拟化技术,它提供了轻量级的虚拟化来隔离进程和资源。虽然容器技术已经存在了很长时间,但它是随着docker的出现而广为人知的。Docker是第一个允许容器在不同机器之间进行移植的系统。它不仅简化了打包应用程序的过程,还简化了打包应用程序的库和依赖关系。甚至整个操作系统的文件系统都可以打包成一个简单的可移植包,可以在任何其他运行docker的机器上使用。
容器和虚拟机具有类似的资源隔离和分配方法。容器虚拟化了操作系统,而不是硬件,因此更加便携和高效。与使用虚拟机相比,容器有以下优点:
- 更有效地使用系统资源
因为容器不需要硬件虚拟化和运行完整的操作系统,所以容器对系统资源的利用率更高。无论应用程序的执行速度、内存丢失还是文件存储速度,它都比传统的虚拟机技术更高效。因此,与虚拟机技术相比,具有相同配置的主机通常可以运行更多的应用程序。
- 更快速的启动时间
传统的虚拟机技术通常需要几分钟来启动应用程序服务。然而,Docker容器应用程序直接运行在宿主内核中,不需要启动完整的操作系统。因此,它可以在几秒甚至几毫秒内启动,这大大节省了开发、测试和部署的时间。
- 一致的运行环境
开发过程中的一个常见问题是环境一致性。由于开发环境、测试环境和生产环境不一致,在开发过程中没有发现一些问题。Docker映像除了内核之外还提供了完整的运行时环境,确保了应用程序运行环境的一致性。
- 更轻松的迁移及更轻松的维护和扩展
因为Docker确保了执行环境的一致性,所以它使得应用程序迁移更容易。Docker所使用的分层存储和图像技术使得应用程序中重复的部分更容易重用,也使得应用程序的维护和更新更加容易,在基本映像的基础上进一步扩展映像也非常简单。
![42d6556f07b87b565d646a856c342435.png](https://i-blog.csdnimg.cn/blog_migrate/0507a8c64b47616d46b79256cdd62e01.jpeg)
Docker容器有如下三个主要概念:
- 镜像:Docker镜像包含打包的应用程序及其依赖的环境。它包含文件系统和应用程序可用的其他元数据,例如镜像运行时的可执行路径。
- 镜像仓库:Docker镜像仓库用于存放Docker镜像,促进不同的人和计算机之间共享这些镜像。在编译映像时,可以在编译它的计算机上运行它,也可以将映像上传到映像存储库,然后将其下载到另一台计算机上运行它。一些仓库是公开的,允许每个人从其中提取图像,而另一些是私人的,只有一些人和机器可以访问它们。
- 容器:Docker容器通常是一个Linux容器,它是基于Docker镜像创建的。一个正在运行的容器是在Docker主机上运行的进程,但是它与主机和在主机上运行的所有其他进程是隔离的。进程也受到资源限制,这意味着它只能访问和使用分配给它的资源(CPU、内存等)。