gpt4 book ai didi

linux - 如果 docker 使用底层 linux 操作系统,为什么要在 Dockerfile 的 FROM 行中指定操作系统

转载 作者:太空狗 更新时间:2023-10-29 11:26:58 29 4
gpt4 key购买 nike

我在 Linux 上读到过,Docker 使用底层的 Linux 内核来创建容器。所以这是一个优势,因为资源不会浪费在创建每个都包含操作系统的虚拟机上。

不过,我很困惑为什么大多数 Dockerfile 在 Dockerfile 的 FROM 行中指定操作系统。我认为,因为它使用的是底层操作系统,所以不必定义操作系统。

我想知道如果指定的操作系统与其运行的机器的操作系统风格不匹配,实际会发生什么。因此,如果机器是 CentOS,但 Dockerfile 的第一行有 FROM Debian:latest,则实际上是一个包含 Debian 操作系统的虚拟机。

也就是说,这是否会因为需要创建一个包含指定操作系统的虚拟机而导致性能下降?

最佳答案

I'm confused, though, as to why most Dockerfiles specify the OS in the FROM line of the Dockerfile. I thought that as it was using the underlying OS, then the OS wouldn't have to be defined.

我认为您的术语可能有点困惑。

Docker 确实使用主机内核,因为 Docker 只不过是隔离主机上运行的进程的一种方式(也就是说,它不是任何一种虚拟化,它不能运行不同的操作系统)。

但是,容器内可见的文件系统与主机没有关系。 Docker 容器可以运行来自任何 Linux 发行版的程序。因此,如果我在 Fedora 24 主机上,我可以通过启动我的 Dockerfile 来构建一个使用 Ubuntu 14.04 用户空间的容器:

FROM ubuntu:14.04

在此容器中运行的进程仍在主机内核上运行,但整个用户空间都来自 Ubuntu 发行版。这不是另一个“操作系统”——它仍然是同一个 Linux 内核——但它是一个完全独立的文件系统。

事实上,我的主机运行的内核版本与您在实际 Ubuntu 14.04 主机中可能会发现的内核版本不同,这几乎无关紧要。将会有一些实用程序需要特定的内核版本,但大多数应用程序并不关心,只要内核“足够新”即可。

所以不,Docker 中没有虚拟化。只是各种(进程、文件系统、网络等)隔离。

关于linux - 如果 docker 使用底层 linux 操作系统,为什么要在 Dockerfile 的 FROM 行中指定操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442704/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com