docker工作stream科学计算

我试图想象一个可以应用在科学工作环境中的工作stream程。 我的工作涉及到做一些科学编码,基本上是Python,pandas,numpy和朋友。 有时我必须使用一些在科学界不常用的模块,有时候我必须在我的模拟链中集成一些编译好的代码。 我运行的代码大多数时间与IPython笔记本并行。

docker工人有什么感兴趣的?

事实上,我可以创build一个包含我的代码和工作环境的docker工人。 然后我可以把docker工人送到我的学院,而不要求他们改变他们的工作环境,例如,安装一个过时的模块版本,以便他们可以运行我的代码。

我想到的工作stream程的草稿如下所示:

  1. 直到我有一个版本,我想与人分享。
  2. build立一个docker,可能是从一个git仓库挂钩。
  3. 共享docker。

有人可以给我一些我应该考虑进一步发展这个工作stream程的指针吗? 一个令我感兴趣的观点是:在Docker上运行的代码可以在机器的几个核心上进行并行处理? 例如连接到群集的IPython笔记本。

Docker可以在多个核上启动多个进程/线程。 多个stream程可能需要使用主pipe(请参阅: https : //docs.docker.com/articles/using_supervisord/ )

你应该build立一个包含你总是使用的东西的图像,并把它用作所有项目的基础。 (可以节省你每次写一个完整的Dockerfile的痛苦)

为什么不直接在容器中开发并使用commit命令将进度保存在本地dockerregistry中? 然后分享最后的形象给你的同事。

如何制作本地registry: https : //blog.codecentric.de/en/2014/02/docker-registry-run-private-docker-image-repository/

即使你有一个完整的容器,我认为像conda这样的包pipe理器仍然可以成为工作stream的基础映像的一个可靠部分。

FROM ubuntu:14.04 RUN apt-get update && apt-get install curl -y # Install miniconda RUN curl -LO http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh RUN bash Miniconda-latest-Linux-x86_64.sh -p /miniconda -b RUN rm Miniconda-latest-Linux-x86_64.sh ENV PATH=/miniconda/bin:${PATH} RUN conda update -y conda 

*从很好的例子显示docker+ miniconda +瓶

Wrt在Dockerfile中执行source activate <env>需要:

 RUN /bin/bash -c "source activate <env> && <do something in the env>" 
Interesting Posts