使用泊坞窗

时间:2017-03-21 14:13:27

标签: docker reproducible-research

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

但是,这只是第一步,在此示例中,数据是图像的一部分,因此当图像加载到容器中时,数据已经存在。我的下一个目标是分离分析代码和数据。据我所知,这意味着有两个容器,一个包含代码(code),另一个包含数据(data)。

对于code,我使用简单的Dockerfile

FROM continuumio/miniconda3 
RUN conda install ipython

data

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

其中data.csv是我复制到图片的数据文件。

构建这两个图像后,我可以按照this解决方案

中的描述运行它们
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.csv访问code。但我有这种感觉,这是次优解决方案,不能算是一种好的做法。

拥有可以访问数据的容器被认为是一种好习惯吗?我读了一些关于data volumes的内容,但我不了解如何利用它们以及如何将它们变成图像。

1 个答案:

答案 0 :(得分:1)

此时,使用容器作为数据存储在很大程度上被认为是过时和弃用的。你应该使用数据量。

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

如果你想将.csv文件发送给某人并让他们在他们的docker容器中使用它,只需给他们.csv文件。

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

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

例如,假设您的泊坞窗图片需要在/data/input.csv找到一个文件。当你致电docker run而你想提供自己的input.csv文件时,你会做类似的事情

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

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