我对可重复的数据科学工作非常感兴趣。为此,我现在正在探索将 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.csv
从code
. 但我有这种感觉,这是一个次优的解决方案,不能被认为是好的做法。
拥有可以访问数据的容器被认为是一种好的做法?我阅读了一些关于数据量的信息,但我不明白如何使用它们以及如何将它们转换为图像。