是否有可能使用“空白”docker集装箱没有任何安装?

我是Docker的新手,我认为Docker是一个软件虚拟化工具(反对操作系统虚拟化)。 我明白,通过这个图像,Docker提供了一个给定的文件结构的非常空白的环境,并在内核主机上执行。 我们需要做的是把我们的应用程序和它的依赖关系(不带操作系统)放到我们的应用程序中。

但是似乎Docker有一个黑暗的一面:每个Dockerfile都以“FROM”开头。

我看到这个和这个,但我不知道明白。 这听起来似乎是Docker接近一种简化的OS虚拟器。

我很有趣的图像大小的优势。 但是,如果我们必须在每个映像上安装一个操作系统,我的“便携”应用程序将很快变得相当繁重。

有没有办法使用“空白图像”?

你可以FROM scratch ,这是一个空文件系统。

请参阅创build基本映像部分,如果你想旋转你自己最小的根文件系统。

您可能会惊讶您的应用程序实际上在根文件系统上有多less依赖关系,最后,在您的FROM语句中使用其中一个标准根文件系统通常更有效率,正如Charles Duffy评论的。

您的应用程序必须有一些底层的操作系统,没有,没有办法启动..

我认为docker索引中最基本的是busybox ,所以FROM busybox会给你一个非常小的设置。

Docker也为每个层使用了大量的caching。 因此,每个在顶部使用FROM centos:centos7容器只会使用一组最小的centos7映像。

基本的图像是非常简约的,所以没有什么可担心的。

这可能有点晚了。 但是我刚刚有一个用例,我需要创build一个裸容器,可以作为多容器docker-compose的一部分启动,然后通过/ bin / bash进入。 请记住,docker集装箱必须运行一个服务,只要服务正在运行,容器就会存在。 所以,我创build了这个容器只是python的。 我复制了一个2行python脚本,只是让它睡觉。 这是我做的。 1.用以下代码创buildpython脚本wait_service.py:

  import time time.sleep(1000) 

2.使用以下几行创buildDockerfile:

  FROM python:2.7 RUN mkdir -p /test WORKDIR /test COPY wait_service.py /test/ CMD python wait_service.py 

3.构build并运行容器。 使用容器ID,我可以进入它。 请根据您想保留这个容器的时间来调整睡眠时间。