我正在使用Docker启动一个新的Django项目。我对许多教程中提到的Ubuntu Docker镜像的存在以及Docker Repo中最受欢迎的镜像之一感到困惑。
我以为Docker是基于OS TOP构建的容器化系统,那么为什么会有Ubuntu Docker Image?也许有关何时/何人使用此功能的常见使用场景会有所帮助。
最佳答案
使用Linux发行版,您通常会得到:
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,那么Docker Ubuntu镜像内部有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237415/