在docker中创建纯数据图像

Bo *_*hen 8 containers volume docker

我知道在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
Run Code Online (Sandbox Code Playgroud)

我的问题是我们如何创建data_image?

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

From ubuntu
Copy data /data
CMD["true"]
Run Code Online (Sandbox Code Playgroud)

但问题是,为什么我需要ubuntu作为我的基本图像??? (我知道这不是什么大问题因为ubuntu会在其他情况下重新使用).我真的很想知道为什么我不能用刮痕?

FROM scratch
COPY data /data
#I don't know what to put here
CMD ["???"]
Run Code Online (Sandbox Code Playgroud)

我在这里创建的图像是一个虚拟的图像,它执行绝对NOTHING并且只作为一个虚拟数据容器,即用于 docker run -v /data --name my_dummy_data_container my_dummy_data_image

有任何想法吗??
(是否因为临时没有实现最小的文件系统?但是如果容器没有实现自己的,那么Doc​​ker可以使用主机系统的文件系统)

Elt*_*man 12

是的,你可以这样做FROM scratch.

A CMD是创建容器所必需的,但Docker不验证它 - 因此您可以指定一个虚拟命令:

FROM scratch
WORKDIR /data
COPY file.txt .
VOLUME /data
CMD ["fake"]
Run Code Online (Sandbox Code Playgroud)

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

> docker create --name data temp
55b814cf4d0d1b2a21dd4205106e88725304f8f431be2e2637517d14d6298959
Run Code Online (Sandbox Code Playgroud)

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

> docker run --volumes-from data ubuntu ls /data
file.txt
Run Code Online (Sandbox Code Playgroud)