我们可以使用docker提取不同的图像.这些图像是不同的linux发行版.

我知道docker使用aufs来控制不同的读写访问级别.所以它可以在主机上重用一些文件.但是,当我的主机运行arch linux时,docker如何在容器中运行apt-get呢?图像是否包含apt-get二进制?但是不同的linux发行版有不同的LIB和软件版本.甚至配置文件也不同.docker如何在arch linux中"运行"ubuntu?

推荐答案

因为内核是一样的.

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

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

下面是Linux的概述.

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

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

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

Linux相关问答推荐

在PowerShell for Linux上,打印出的maven命令还有其他字符

为什么Read()和cin.get()对输出缓冲区的影响不同?

如何在脚本中使用sudo修改其他用户的crontab

使用 sed 命令仅打印正则表达式匹配

awk/sed 命令仅在模式 2 匹配时打印模式 1

如何在 Linux 上使用 -grep 构建过滤间隔的命令

树莓派拒绝连接到瓶子服务器

如何在 Linux 上捕获原始 HID 输入?

如何以另一个用户的身份使用 sudo 在 bash 子shell 中执行一系列命令?

一个进程如何拦截Linux上另一个进程的stdout和stderr?

bashrc 在运行 bash 命令之前不会加载

如何在 shell 脚本中向文件中添加一行?

如何将路径名中的..转换为 bash 脚本中的绝对名称?

如何在 Linux 中删除早于特定日期的文件?

如何从 Linux 终端找到特定文件?

Anaconda 安装后,conda 命令失败并显示ImportError: no module named conda.cli

Linux:处理成服务

如何从目录复制内容而不是符号链接?

后缀 - status=bounced(未知用户myuser)

Linux 守护进程