是否有可能使用“空白”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,我可以进入它。 请根据您想保留这个容器的时间来调整睡眠时间。