docker - 如果Docker不封装OS,那么Doc​​ker Ubuntu镜像内部有什么?

标签 docker

我正在使用Docker启动一个新的Django项目。我对许多教程中提到的Ubuntu Docker镜像的存在以及Docker Repo中最受欢迎的镜像之一感到困惑。

我以为Docker是基于OS TOP构建的容器化系统,那么为什么会有Ubuntu Docker Image?也许有关何时/何人使用此功能的常见使用场景会有所帮助。

最佳答案

使用Linux发行版,您通常会得到:

  • 加载内核
  • 的 bootstrap
  • 管理系统并加载初始化系统的内核
  • 设置并运行其他所有内容的init系统
  • 其他所有内容

  • Docker本身替代了大多数init系统。
    Docker镜像取代了“其他所有内容”,它仍然可以是任何常规发行版的很大一部分。

    Ubuntu镜像包含最少的Ubuntu二进制文件集和共享库,这些二进制文件和共享库使用Ubuntu构建工具编译以运行Shell,执行一些常规的linuxy事情并使用apt软件包管理器。

    Centos镜像对Centos二进制文件,共享库和yum程序包管理器的作用相同。等等

    Docker镜像不需要是完整的发行版。您可以在容器中运行single statically compiled binary,并且只需要镜像中的二进制文件即可。

    busybox镜像是从单个静态二进制文件构建很大程度上正常的Linux环境的一个很好的示例。

    内核

    所有容器共享一个主机内核。使用内核cgroup和 namespace 将容器与系统的其余部分分开。对于容器中运行的任何对象,这似乎都是它自己的系统。

    所有版本的Linux都不使用完全相同的内核,而是使用kernel interfaces are largely compatible,它允许Docker镜像的可移植性。 Docker本身需要3.10+内核才能运行,这缩小了内核可能性的范围。

    可能有一些深奥的软件需要编译一些深奥的内核功能,而这些功能无法在不同的Docker主机上运行。这是非常罕见且容易识别的,因为您必须编译内核才能使所说的软件正常工作。

    关于docker - 如果Docker不封装OS,那么Doc​​ker Ubuntu镜像内部有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237415/

    相关文章:

    Docker compose 在 Flask 应用程序启动之前完全启动 mysql 数据库

    macos - Docker:无法读取 CA 证书:没有此类文件或目录

    typescript - Testcafe Docker - 错误 : TypeScript compilation failed. 找不到名称 'require'

    docker - docker 容器内的 overlayfs

    Docker-compose 无法在 boot2docker 上正确安装或运行

    docker - 带有窗口容器的服务结构

    docker - Docker Windows Nanoserver 容器中的 Visual Studio 2017 远程调试器无法启动

    docker - “env”参数不适用于容器

    symfony - Docker exec失败,权限被拒绝:未知

    mongodb - Docker-Compose:无法连接到 Mongo