当前位置: 首页 > 面试题库 >

为什么Docker能够运行不同的Linux发行版?

慕高格
2023-03-14
问题内容

我们可以使用docker拉取不同的图像。而且这些映像是不同的linux发行版。但是,无论运行在哪个linux distro
docker上,docker都可以像在虚拟机中一样运行这些不同的linux发行版。

我知道docker使用aufs来控制不同的读写访问级别。因此它可以重用主机上的某些文件。但是apt-get当主机运行时,docker如何在容器中运行archlinux?图像是否包含apt-get二进制文件?但是,不同的Linux发行版具有不同的库和软件版本。即使配置文件也不同。docker如何在arch linux中“运行” ubuntu?


问题答案:

因为内核是相同的。

所有Linux发行版的共同点以及为什么将它们称为linux,是因为它们都使用linux内核。

容器与主机共享同一内核,这就是为什么您可以在Ubuntu主机上运行Arch映像的原因。

这是Linux的概述。

内核是操作系统的一部分,用于处理与硬件的通信。这是操作系统的最低级别。以下是内核的主要功能列表:

  • 内存管理
  • 网络管理
  • 设备驱动
  • 文件管理
  • 流程管理

因此,当您使用容器时,您只能访问主机的内核,因为它是与硬件通信的唯一部分,只要您的操作系统使用good
syscall,您就可以在容器内运行任何Linux发行版。(这是您不能在容器内使用Windows的原因:它没有使用相同的syscall)。



 类似资料:
  • 我们可以使用docker来拉出不同的图像。这些映像是不同的linux发行版。但是无论docker运行在哪个linux发行版上,docker都可以像在虚拟机中一样运行这些不同的linux发行版。 我知道docker使用aufs来控制不同的读写访问级别。从而可以重用主机上的某些文件。但是当我的主机运行时,docker如何在容器中运行?图像是否包含二进制文件?但是不同的linux发行版有不同的库和软件版

  • 问题内容: 我在MacOSX上使用Docker(带有Boot2Docker)。 我可以从Docker Hub运行映像。 但是,当我尝试像这样运行自己的映像之一时: 要么 要么 我得到: 我猜它找不到在容器中执行的bash二进制文件,但是为什么呢? 基本图像是 谢谢你的帮助。 阿什莉 问题答案: 您的图片基于不带bash外壳的busybox。它的确有外壳。 所以这不起作用: 但这确实是: 由于您的入

  • docker如何在Debian主机上运行,或者在容器中运行OpenSUSE?它使用不同的内核,具有不同的模块。另外,老版本的Debian使用了老版本的内核,那么如何在3.10+版本的内核上运行它呢?旧的内核只有旧的内置功能,旧的发行版如何管理新的功能?这里面有什么“诀窍”?

  • 我使用http://openjdk.java.net/projects/code-tools/jmh/的JMH基准框架对我的代码进行基准测试。我的理解是,JMH在基准测试期间多次分叉JVM,以便丢弃由JVM在执行期间执行的实时(JIT)分析建立的任何概要文件。 我理解为什么这在某些情况下是有用的,比如下面(逐字复制自http://Java-performance . info/jmh/): 默认情

  • cross-env node_env=development node_modules/webpack/bin/webpack.js--progress--hide-modules--config=node_modules/laravel-mix/setup/webpack.config.js /users/xwu33/src/bioproc/node_modules/webpack-cli/bi