AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 755607
Accepted
user1620696
user1620696
Asked: 2016-02-12 08:39:02 +0800 CST2016-02-12 08:39:02 +0800 CST 2016-02-12 08:39:02 +0800 CST

如果容器没有来宾操作系统,为什么我们要使用带有 Docker 的操作系统基础映像?

  • 772

我刚刚开始学习 Docker,有些事情让我很困惑。正如我在 Docker 网站上所读到的,容器与虚拟机不同。据我了解,容器只是一个沙箱,在其中运行整个隔离的文件系统。

我还读到容器没有安装来宾操作系统。相反,它依赖于底层操作系统内核。

这一切都很好。我感到困惑的是,有一些以操作系统命名的 Docker 镜像。我们看到 Ubuntu、Debian、Fedora、CentOS 等镜像。

我的观点是:这些图像是什么,真的吗?基于 Debian 映像创建容器与创建虚拟机并安装 Debian 有何不同?

我认为容器没有安装来宾操作系统,但是当我们创建图像时,我们将它们基于以某个操作系统命名的某个图像。

此外,在我看到的示例中docker run ubuntu echo "hello world",似乎我们正在使用 Ubuntu 启动 VM 并使其运行命令echo "hello world"。

以同样的方式,我们docker run -it ubuntu /bin/bash似乎正在使用 Ubuntu 启动虚拟机并使用命令行访问它。

无论如何,那些以操作系统命名的图像是什么?使用其中一个映像运行容器并使用相应的来宾操作系统启动 VM 有何不同?

是不是我们只是与主机操作系统共享内核(因此我们可以访问底层机器硬件资源,而不需要虚拟化硬件),但仍然按顺序使用容器上每个不同系统的文件和二进制文件支持我们想要运行的任何应用程序?

linux
  • 4 4 个回答
  • 44054 Views

4 个回答

  • Voted
  1. Best Answer
    drookie
    2016-02-12T09:15:19+08:002016-02-12T09:15:19+08:00

    由于所有 Linux 发行版都运行相同的(是的,它有点简化)Linux 内核并且仅在用户态软件上有所不同,因此很容易模拟不同的发行版环境——只需安装该用户态软件并假装它是另一个发行版。具体来说,在 Ubuntu OS 中安装 CentOS 容器意味着您将从 CentOS 获得用户空间,同时仍然运行相同的内核,甚至不会运行另一个内核实例。

    所以轻量级虚拟化就像在同一个操作系统中拥有独立的隔间。相反,真正的虚拟化是在主机操作系统中拥有另一个成熟的操作系统。这就是为什么 docker 不能在 Linux 中运行 FreeBSD 或 Windows 的原因。

    如果这样更容易,您可以认为 docker 是一种非常复杂和高级的 chroot 环境。

    • 92
  2. Shiv sandhu
    2016-06-16T17:33:31+08:002016-06-16T17:33:31+08:00

    容器在单个内核上运行。换句话说,所有容器都有一个内核(主机操作系统)。而另一方面,管理程序有多个内核。每个虚拟机运行在不同的内核上。

    而“docker run ubuntu”就像创建 chroot 环境一样。

    • 1
  3. Mohamed Abdelhady
    2020-10-09T19:28:23+08:002020-10-09T19:28:23+08:00

    我一直在为您提出的相同问题而苦苦挣扎,这就是我所理解的。

    容器没有来宾操作系统,你是对的。

    那我们为什么要把容器建立在 OS 镜像上呢?

    因为您想使用一些命令,例如 (apt, ls, cd, pwd)。这些命令是对二进制文件的调用,您无需安装任何东西就可以在您的主机操作系统中使用这些文件。为了让您能够在您的 docker 镜像中运行这些命令,您必须在您的镜像中拥有它们的二进制文件,因为隔离您不只是从主机操作系统执行二进制文件。

    请参阅此答案以更好地理解为什么我们甚至需要基本图像:https ://stackoverflow.com/a/62384611

    • 1
  4. Anu
    2022-04-20T18:29:58+08:002022-04-20T18:29:58+08:00

    为了更清楚地了解@drookie 的答案:

    • 因此,当您安装 Docker 桌面时,通常它会安装一个 Linux 虚拟机来运行容器。
      • 发生的事情是在 macOS/windowsOS 上,安装docker desktop后,它安装了运行 Docker Engine 的 Linux VM。

      • 为了增加更深入的清晰度:Docker Desktop 为开发人员提供的一些神奇的功能包括:

        • 运行 Linux 工具和容器的安全、优化的 Linux VM
        • 无缝接入主机操作系统,使容器能够访问文件系统和网络
        • 捆绑的容器工具,包括 Kubernetes、Docker Compose、buildkit、扫描
        • 用于可视化管理所有容器内容的 Docker 仪表板
        • 适用于 Mac 和 Windows 的简单一键式安装程序
        • 预配置的健全和安全的默认值
        • 自动增量更新,让您的系统安全运行

    如果您直接在操作系统上安装 docker-engine,它将使用相同的 HOST Linux 内核。

    • -1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve