0

我对可重复的数据科学工作非常感兴趣。为此,我现在正在探索将 Docker 作为一个能够捆绑代码、数据和环境设置的平台。我的第一个简单尝试是包含所需数据的 Docker 映像(链接)。

然而,这只是第一步,在这个例子中,数据是图像的一部分,因此当图像加载到容器中时,数据已经存在。我的下一个目标是解耦分析代码和数据。据我了解,这意味着有两个容器,一个带有代码(code),一个带有数据(data)。

对于code我使用一个简单的Dockerfile

FROM continuumio/miniconda3 
RUN conda install ipython

对于data

FROM atlassian/ubuntu-minimal
COPY data.csv /tmp

data.csv我要复制到图像的数据文件在哪里。

构建这两个图像后,我可以按照此解决方案中的描述运行它们:

docker run -i -t --name code --net=data-testing --net-alias=code drorata/minimal-python /bin/bash
docker run -i -t --name data --net=data-testing --net-alias=data drorata/data-image /bin/bash

启动网络后:docker network create data-testing

在这些步骤之后,我可以从另一个容器 ping 一个容器,并且可能还可以data.csvcode. 但我有这种感觉,这是一个次优的解决方案,不能被认为是好的做法。

拥有可以访问数据的容器被认为是一种好的做法?我阅读了一些关于数据量的信息,但我不明白如何使用它们以及如何将它们转换为图像。

4

1 回答 1

1

在这一点上,使用容器作为数据存储在很大程度上被认为已过时和弃用。您应该改用数据卷。

但是数据量不是可以变成图像的东西。真的,没有必要这样做。

如果您想将 .csv 文件交付给某人并让他们在其 docker 容器中使用该文件,只需将 .csv 文件提供给他们即可。

将文件放入容器并能够使用它的最简单方法是使用主机安装的卷。

使用-von 标志docker run,您可以指定要挂载到 docker 容器中的本地文件夹或文件。

例如,假设您的 docker 映像希望在/data/input.csv. 当你打电话docker run并且你想提供你自己的 input.csv 文件时,你会做类似的事情

docker run -v /my/file/path/input.csv:/data/ my-image

我没有提供您展示的本示例中的所有选项,但我正在说明-v标志。这将获取您的本地文件系统input.csv并将其安装到 docker 容器中。现在您的容器将能够使用该数据的副本。

于 2017-03-21T14:22:32.710 回答