conda在容器内的目的是什么?

时间:2017-10-11 01:40:45

标签: python docker containers anaconda conda

我见过很多带有conda命令的dockerfiles的例子。还有预制的anaconda和miniconda容器。我肯定错过了什么。

码头工人不能更换virtualenv和conda吗?我不应该在dockerfile中拥有所有依赖项吗?我不明白我在这里添加anaconda会得到什么。事实上,如果我不使用所有miniconda包含的模块,如果我必须拉一个miniconda容器,它似乎会使我的容器变得更大。

1 个答案:

答案 0 :(得分:4)

Docker不会替换任何东西。这只是一种做事的方式。

不,您不应该在Dockerfile中拥有所有依赖项。举个例子,我将从virtualenv运行pip install而不用触及Docker / * conda,除非我有充分的理由。你缺乏requirements.txt不是一个很好的理由:)

康达于2012年问世 - 远在Docker之前。由于Python在非程序员社区中有如此强大的追随者,我很少期望可理解的代码,更不用说某种类型的DevOps能力。 Conda是这个群体的完美解决方案。

使用Docker,您可以拥有一个功能强大的Docker环境FROM python:xxCOPY . /workdirRUN pip install -r requirements.txt(假设您正在使用该文件* ahem),但您的开发人员将会可能需要一个卷以便他们可以工作(所以他们需要知道--volume。另外,如果您正在运行Django,您需要配置端口(现在他们需要--port并且您需要EXPOSE)。哦,Django也可能需要一个数据库。现在你需要另一个容器并且你正在编写一个docker-compose文件。

但请考虑以下内容,几乎所有我的专业(DevOps)经验如果您只包含requirements.txt -

  • 我可以在我的Docker容器中使用该文件
  • 要求全部在一个地方
  • 如果我想要
  • ,我可以在我的当地使用venv开发
  • Travis可以从requirements.txt安装并在不使用Tox的情况下测试多个版本
  • Setuptools会自动处理,所以我的东西可以使用pip
  • 我可以将这些Dockerfiles(或部分)重用于ECS,Kubernetes等
  • 我可以在不使用Docker的情况下部署到EC2
  • 我可以通过pip
  • 在本地安装软件包
HTH - 不要过于专注于一项技术!