【问题标题】:Why the first step of building a Docker Container Image takes a Base Image as source which itself seems to me as an operating system like ALPINE?为什么构建 Docker 容器镜像的第一步需要一个基础镜像作为源,在我看来它本身就是一个像 ALPINE 这样的操作系统?
【发布时间】:2020-10-26 06:29:15
【问题描述】:

我最近从 Udemy 学习了 Docker 课程,但我在理解 Docker 世界中的 Image 到底是什么时遇到了问题?

我了解到,当 Docker 在我们的系统上运行时,它本身就是一个运行 Linux 操作系统的虚拟机。该 Linux 操作系统从我们提供的镜像中运行多个容器。 Container 在硬盘驱动器上拥有独立的空间,分配了自己的内存和 CPU,但与虚拟机不同的是,它没有自己的完整操作系统。

But, because I have learned that the Containers share a single operating system, I am confused about the Images we build for running a Container. 因为我看到要构建 Docker 映像,我们首先加载一个基本映像(在我看来,它本身就是一个操作系统,例如...FROM Alpine 等)。那么当Image本身有操作系统的时候,为什么说Containers共享单主机操作系统呢?

【问题讨论】:

    标签: docker kubernetes virtual-machine


    【解决方案1】:

    说容器共享一个操作系统有点误导。他们共享的是内核,而不是像 cp 或 bash 这样的操作系统通常附带的库和支持程序。

    【讨论】:

    • 所以,一个基本的 docker 镜像只包含支持程序,并且 Container 共享同一个内核。如果我只是从现有操作系统中复制一个“cp and bash”文件并将其用作基本 docker 映像,它会工作吗?
    • 我觉得这个问题会进一步说明我想问的问题:stackoverflow.com/questions/18274088/…
    • 谢谢,您的回答帮助我理解了我想问的问题,而我自己并不知道。
    【解决方案2】:

    基础镜像只是一个 Docker 镜像,它是使用所有其他 Docker 镜像所需的通用包构建的。始终建议准备一个基础 Docker 映像并使用它来派生其他 Docker 映像。当然,构建 Docker 镜像有很多最佳实践,可以使其尽可能优化,从而提高 Docker 容器的性能和启动时间。

    当您运行 Docker 映像构建时,Dockerfile 中的每条指令都会创建一个文件系统层。文件系统层是堆叠的,每个文件系统层都包含增量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 2010-12-15
      • 2014-05-07
      • 2016-11-11
      • 1970-01-01
      相关资源
      最近更新 更多