在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高山