我正在使用Docker启动一个新的Django项目。我很困惑Ubuntu Docker图像的存在,这在许多教程中都有提及,也是Docker Repo中最受欢迎的图像之一。
我认为Docker是一个内置于操作系统的容器化系统,为什么还有一个Ubuntu Docker Image呢?关于何时/谁将使用它的常见使用场景可能会有所帮助。
答案 0 :(得分:2)
使用Linux发行版通常可以获得:
init
系统 Docker本身取代了大部分init
系统
Docker图像取代了“Everything”,它仍然可以是任何正常发行版的很大一部分。
Ubuntu映像包含最小的Ubuntu二进制文件集和使用Ubuntu构建工具编译的共享库来运行shell,做一些正常的linuxy事情并使用apt
包管理器。
Centos图像与Centos二进制文件,共享库和yum
包管理器相同。等
Docker镜像不需要是完整的分发版。您可以在容器中运行single statically compiled binary,只需在图像中使用该二进制文件即可。
busybox图像是从单个静态二进制文件构建基本正常的Linux环境的一个很好的例子。
所有容器共享一个主机内核。使用内核cgroup和名称空间将容器与系统的其余部分分开。对于容器中运行的任何东西,这似乎是它自己的系统。
所有版本的Linux都不使用完全相同的内核,而kernel interfaces are largely compatible允许Docker镜像的可移植性。 Docker本身需要3.10+内核才能运行,这缩小了内核可能性的范围。
可能有一些深奥的软件需要编译一些不能在不同的Docker主机上运行的深奥内核功能。这是非常罕见且易于识别的,因为您必须编译内核才能使所述软件正常工作。
答案 1 :(得分:1)
反过来说 - Docker真的只是一个关于类固醇的过程'。
接下来的问题是:""处理。为每个不同的Ubuntu版本安装Docker容器允许您使用每个版本附带的不同Django版本进行测试。
使用我在这里的Ubuntu图像和bash --version
:
$ docker run --rm -ti ubuntu:trusty bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ docker run --rm -ti ubuntu:vivid bash --version | head -1
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
$ docker run --rm -ti ubuntu:wily bash --version | head -1
GNU bash, version 4.3.42(1)-release (x86_64-pc-linux-gnu)
$ docker run --rm -ti ubuntu:xenial bash --version | head -1
GNU bash, version 4.3.42(1)-release (x86_64-pc-linux-gnu)
$
答案 2 :(得分:0)