在docker中创build一个纯数据镜像

我知道在docker中我们可以像这样运行数据卷容器

#create a pure data container based on my data_image docker run -v /data --name data-volume-container data-vol-container-img # here I'm using the data volume in a property container (ubuntu) docker run --volumes-from data-volume-container ubuntu 

我的问题是我们如何创builddata_image?

我知道最简单的方法是创build一个基于Ubuntu的图像,或类似的东西

 From ubuntu Copy data /data CMD["true"] 

但事情是,为什么我需要Ubuntu的基本形象? (我知道这不是一个大问题,因为Ubuntu将在其他情况下重新使用)。 我真的想知道为什么我不能使用从头开始?

 FROM scratch COPY data /data #I don't know what to put here CMD ["???"] 

我在这里创build的图像意味着是一个虚拟的,它执行绝对没有,只作为一个虚拟的数据容器,即在docker run -v /data --name my_dummy_data_container my_dummy_data_image

有任何想法吗??
(这是因为从头开始没有实现一个最小的文件系统,但是如果一个容器没有实现它自己的话,Docker可以使用主机系统的文件系统)

是的,你可以FROM scratch

CMD需要创build一个容器,但是Docker不会validation它 – 所以你可以指定一个虚拟命令:

 FROM scratch WORKDIR /data COPY file.txt . VOLUME /data CMD ["fake"] 

然后使用docker create为你的数据容器而不是docker run ,所以假命令永远不会启动:

 > docker create --name data temp 55b814cf4d0d1b2a21dd4205106e88725304f8f431be2e2637517d14d6298959 

现在创build容器,以便可以访问卷:

 > docker run --volumes-from data ubuntu ls /data file.txt 

我想你需要phusion/baseimage或寻找alpine base image (高山很轻)。 Phusion也是基于Ubuntu(它解决了一些问题,如zomby进程等),所以这不是你的select。 但是如果你有其他的基于Ubuntu的容器,你将不会有任何冒险。 在这种情况下,你应该只使用阿尔卑斯山的图像:

docker高山