在 docker 容器中使用操作系统有什么意义?
在 docker 存储库中,您会找到一个 Ubuntu docker 镜像:https : //registry.hub.docker.com/_/ubuntu/ 我认为 Docker 更像是在“应用程序”级别。
那么 Ubuntu docker 容器和 Ubuntu 虚拟机之间有什么区别?如果你在一个 docker 容器中有一个完整的操作系统,那么使用 Docker 不是没有意义吗?
谢谢
Xav*_*cas 13
您缺乏基本的 Docker 概念。这是完全不同的事情。
您需要了解的第一件事是 Docker 的哲学:在容器中运行一个隔离的进程。您不会在 Docker 容器中运行操作系统,您将在容器内运行一个进程,该进程具有基于您选择的 linux 发行版的根文件系统内容。Ubuntu 是其中的一个选择。
现在您应该想知道如何让进程在与您的主机运行的 linux 发行版不同的 linux 基础映像中运行。要运行操作系统,您基本上需要:
Docker 使用 UnionFS 来管理容器内的磁盘块层,以便您可以堆积它们。
在幕后,它使用联合挂载,允许同时挂载多个文件系统,看起来像一个完整的虚拟系统。实际上,它以只读模式将基础镜像层作为读写模式放置在基础根文件系统之上。
在这里,您有一堆磁盘块,其分层方式是基本映像来自的 linux 发行版将包含相同的文件系统,一旦安装在真实主机中,但这次它位于容器内。
现在缺少的最后一件事是:你如何孤立地运行这个东西?
答案是:命名空间。我不会在这里详细介绍,因为它会偏离最初的问题。但是您需要知道的是,从内核 2.4.19 开始,多年来出现了各种名称空间。目前有以下命名空间可用:
命名空间是内核内部的独立结构,允许进程在特定环境中运行。例如,MNT 命名空间将是使进程在基本映像根文件系统特性中运行的关键特性。NET 命名空间将是容器具有特定网络接口以便与 docker 网桥等进行通信的另一个关键功能。
所以,是的,所有这些的主要目的是运行一个隔离的应用程序,在一个叫做容器的盒子里轻松地将它从本地环境传送到生产环境。
在深入研究之前阅读docker 的文档是个好主意。
| 归档时间: |
|
| 查看次数: |
3686 次 |
| 最近记录: |