【问题标题】:create a pure data image in docker在 docker 中创建一个纯数据镜像
【发布时间】:2016-10-17 15:25:13
【问题描述】:

我知道在 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

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

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

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

但问题是,为什么我需要 ubuntu 作为我的基础镜像??? (我知道这没什么大不了的,因为 ubuntu 将在其他场景中重用)。我真的很想知道为什么我不能使用scratch??

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

我在这里创建的图像是一个虚拟图像,它绝对不执行任何操作,只充当一个虚拟数据容器,即用于docker run -v /data --name my_dummy_data_container my_dummy_data_image

有什么想法吗??
(是不是因为scratch没有实现最低限度的文件系统?但是如果容器没有实现自己的,Docker可以使用宿主系统的文件系统)

【问题讨论】:

  • 请注意,现在认为“数据卷容器”已被弃用,因为 docker api 支持将卷作为第一类对象进行管理。也就是说,您可以运行“docker volume create”、“docker volume ls”等内容。
  • 感谢@larks。通过 docker volume create 创建的卷不包含任何内容,因此您仍然需要一个容器将内容放在那里,然后与他人共享。这就是数据卷容器的作用:卷容器所基于的 docker 镜像,有一些内置的内容,因此当数据容器被其他应用程序容器使用时,内容已经可用

标签: docker containers volume


【解决方案1】:

是的,您可以这样做FROM scratch

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

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

然后将docker create 用于您的数据容器,而不是docker run,因此假命令永远不会启动:

> docker create --name data temp
55b814cf4d0d1b2a21dd4205106e88725304f8f431be2e2637517d14d6298959

现在容器已创建,因此可以访问卷:

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

【讨论】:

  • 准确!很好的答案!
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 2015-08-25
  • 1970-01-01
  • 2015-06-02
  • 2023-04-10
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
相关资源
最近更新 更多