如果你是一名程序员或技术人员,你至少听说过 Docker:一种用于在“容器”中打包、发送和运行应用程序的有用工具。
随着它受到的关注日益增多,开发人员和系统管理员很难不关注到它。
容器和 Docker 之间是有区别的。 容器是用于运行小的程序包的工具,而 Docker 是容器运行时和业务流程协调程序。
容器是一个解决方案,可解决如何让软件在从一个计算环境移动到另一个计算环境时可靠运行的问题。
它可以从开发人员的笔记本电脑到测试环境,从过渡环境到生产环境。 此外,从数据中心的物理计算机到私有云或公有云中的 VM。
当支持的软件环境不相同时,就会出现问题。
例如,假设你将使用 Python 3 进行开发,但将其部署到生产环境后,它将在 Python 2.7 上运行。 这很可能会引起若干问题。
并不仅限于软件环境;如果两种环境之间的网络堆栈存在差异,那么你可能会在生产环境中遇到问题。
容器由整个运行时环境组成:
- 应用程序及其所有依赖项。
- 库和其他二进制文件。
- 运行它所需的配置文件,捆绑到一个包中。
可以通过容器化应用程序平台及其依赖项来解决此问题。 此外,已抽象 OS 分发和底层基础结构中的差异。
容器和 VM 的目标相似:将应用程序及其依赖项隔离到可在任何位置运行的自包含单元中。 它们消除了对物理硬件的需求,从而可实现:
- 更高效的计算资源使用。
- 能耗。
- 成本效益。
容器和 VM 之间的主要区别在于其体系结构方法。 接下来将更详细地介绍。
实质上,虚拟机是对真实计算机的模拟,它就像真实计算机一样执行程序。 VM 使用“虚拟机监控程序”在物理计算机上运行。
如下图所示,VM 为每个新 VM 打包了虚拟硬件、内核 (OS) 和用户空间。
与提供硬件虚拟化的 VM 不同,容器通过抽象化“用户空间”来提供操作系统级虚拟化。
该图显示容器仅打包用户空间,而不是像 VM 那样打包内核或虚拟硬件。 每个容器都有其独立的用户空间,以允许多个容器在单台主机上运行。 我们可以看到,所有操作系统级体系结构均在容器之间共享。 从头开始创建的唯一部分是箱和库。 这就是容器如此轻量的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/59835.html