【问题标题】:Docker workflow for scientific computing用于科学计算的 Docker 工作流程
【发布时间】:2014-09-16 02:23:33
【问题描述】:

我试图想象一个可以应用于科学工作环境的工作流程。我的工作涉及做一些科学编码,主要是使用 Python、pandas、numpy 和朋友。有时我必须使用一些在科学界不是通用标准的模块,有时我必须在我的模拟链中集成一些编译代码。我运行的代码大部分时间都与 IPython notebook 并行。

我觉得 docker 有什么有趣的地方?

我可以创建一个包含我的代码及其工作环境的 docker。然后,我可以将 docker 发送到我的大学,而无需要求他们更改工作环境,例如,安装一个过时版本的模块,以便他们可以运行我的代码。

我想到的工作流程粗略如下:

  1. 在本地开发,直到我有想要与他人分享的版本。
  2. 构建一个 docker,可能带有来自 git repo 的钩子。
  3. 共享 docker。

有人可以给我一些建议,告诉我在进一步开发这个工作流程时应该考虑什么?让我感兴趣的一点是:在 docker 上运行的代码可以在机器的几个内核上午餐并行进程吗?例如,连接到集群的 IPython 笔记本。

【问题讨论】:

    标签: workflow docker scientific-computing


    【解决方案1】:

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

    您可能应该构建一个包含您经常使用的东西的图像,并将其用作您所有项目的基础。 (会省去你每次都写一个完整的 Dockerfile 的痛苦)

    为什么不直接在容器中开发并使用 commit 命令将进度保存在本地 docker 注册表中?然后将最终图像分享给您的同事。

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

    【讨论】:

      【解决方案2】:

      即使您将拥有一个完整的容器,我认为像 conda 这样的包管理器仍然可以成为您工作流程的基础映像的可靠部分。

      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
      

      *来自nice example showing docker + miniconda + flask

      在 Dockerfile 中写source activate <env> 你需要:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        • 2011-05-15
        • 2013-08-22
        • 2013-01-29
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多