docker工作stream科学计算
我试图想象一个可以应用在科学工作环境中的工作stream程。 我的工作涉及到做一些科学编码,基本上是Python,pandas,numpy和朋友。 有时我必须使用一些在科学界不常用的模块,有时候我必须在我的模拟链中集成一些编译好的代码。 我运行的代码大多数时间与IPython笔记本并行。
docker工人有什么感兴趣的?
事实上,我可以创build一个包含我的代码和工作环境的docker工人。 然后我可以把docker工人送到我的学院,而不要求他们改变他们的工作环境,例如,安装一个过时的模块版本,以便他们可以运行我的代码。
我想到的工作stream程的草稿如下所示:
- 直到我有一个版本,我想与人分享。
- build立一个docker,可能是从一个git仓库挂钩。
- 共享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>"