是否可以使用"空白"没有任何安装的docker容器吗?

时间:2014-07-21 13:31:31

标签: docker

我是Docker的新手,我认为已经理解Docker是一种软件虚拟化工具(反对操作系统虚拟化)。据我所知,通过这张图片,Docker提供了一个非常空白的环境,它具有给定的文件结构并在内核主机上执行。我们需要做的是将我们的应用程序及其依赖项(没有操作系统)放在我们应用程序的轻便携容器中。

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

我看到thisthis,但我不确定。听起来Docker接近一种简化的OS虚拟化器。

我对图像大小的优势感兴趣。但是如果我们必须在每个图像上安装一个操作系统,我的“便携式”应用程序将会非常繁重。

真的没有办法使用“空白图片”吗?

4 个答案:

答案 0 :(得分:7)

您可以从FROM scratch开始,这是一个空文件系统。

如果您想要启动自己的最小根文件系统,请参阅Creating a Base Image部分。

您可能会惊讶于您的应用程序实际上对根文件系统有多少依赖关系,最后,使用FROM语句中的一个标准根文件系统通常会更高效,如Charles达菲评论说。

答案 1 :(得分:2)

空/ Dockerfile

FROM scratch
WORKDIR /

构建并检查大小

docker build empty/ -t empty
docker images | grep empty

答案 2 :(得分:0)

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

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

Docker还为其每个层使用了大量缓存。因此,在顶部使用FROM centos:centos7的每个docker容器将只使用1组最小的centos7图像。

基本图像非常简约,所以无需担心......

答案 3 :(得分:0)

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

    import time
    time.sleep(1000)

2。使用以下行创建Dockerfile:

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

3。构建并运行容器。使用容器ID,然后我可以进入它。请根据您想要保留此容器的时间来调整睡眠时间。