Python 康达在容器内的用途是什么?

Python 康达在容器内的用途是什么?,python,docker,containers,anaconda,conda,Python,Docker,Containers,Anaconda,Conda,我见过许多DockerFile的例子,其中包含conda命令。还有预制的蟒蛇和迷你蟒蛇容器。我一定错过了什么 docker不是取代了virtualenv和conda吗?我的dockerfile中不应该有我所有的依赖项吗?我不明白在这里添加水蟒有什么好处。事实上,如果我没有使用miniconda包含的所有模块,就必须拉一个miniconda容器,这似乎会使我的容器变得不必要的大。Docker不会替换任何东西。这只是做事的一种方式 不,您不应该将所有依赖项都放在Dockerfile中。一、 例如,将

我见过许多DockerFile的例子,其中包含conda命令。还有预制的蟒蛇和迷你蟒蛇容器。我一定错过了什么


docker不是取代了virtualenv和conda吗?我的dockerfile中不应该有我所有的依赖项吗?我不明白在这里添加水蟒有什么好处。事实上,如果我没有使用miniconda包含的所有模块,就必须拉一个miniconda容器,这似乎会使我的容器变得不必要的大。

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

不,您不应该将所有依赖项都放在Dockerfile中。一、 例如,将从virtualenv运行
pip安装
,而从未接触Docker/*conda,除非我有充分的理由。您缺少requirements.txt不是一个很好的理由:)

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

有了Docker,您就可以拥有一个功能强大的Docker环境,其中包含来自python:xx的
COPY/workdir
,并
运行pip安装-r requirements.txt
(假设您使用的是该文件*ahem),但是您的开发人员可能需要一个卷才能工作(因此他们需要知道
--卷
。此外,如果您运行的是Django,您需要配置端口(现在他们需要
--端口
,您需要
公开
).噢,Django可能还需要一个数据库。现在您需要另一个容器,并且正在编写docker compose文件

但是请考虑下面的内容,从我的专业(DeVOPS)经验来看,如果你只包含需求。

  • 我可以在Docker容器中使用该文件
  • 这些要求都在一个地方
  • 如果我愿意,我可以用venv在我的本地电脑上开发
  • Travis可以从requirements.txt安装并在多个版本上进行测试,而无需使用Tox
  • Setuptools会自动处理,所以我的东西可以与pip一起使用
  • 我可以将这些DockerFile(或部件)与ECS、Kubernetes等一起重用
  • 我可以在不使用Docker的情况下部署到EC2
  • 我可以通过pip在本地安装该软件包

HTH-不要太拘泥于一项技术!

虽然你的观点似乎是正确的,但我想补充一点,Docker和其他用例有任何不同的用例,其他需求或其他知识级别可能需要在Dockerfile中使用非常不同的方法。这不是一个非常有用的注释。因此,你可以在conda中使用condatainer因为…“用例”?你已经达到了我的兴趣的顶峰。这些用例实际上是什么样子的?我没有任何特别的想法,但我可以想象一些包含“以前只使用过conda”或“我在Windows上开发,现在我必须构建一个Docker之类的东西。”Dockers的初始版本是2013年。虽然这对我来说更有意义,但你的论点基本上仍然是“在本地开发中使用conda而不是docker,因为开发人员不必费心去弄清楚。”对吗?难道不是容器一致性的主要卖点之一吗?您为本地开发配置了django和DB容器,这样所有开发人员都可以在同一个环境中开发,而不是配置自己的本地django和DB设置(比compose复杂得多??)不,虽然我不太清楚。很抱歉。我投票赞成给他们一个使用主机名的docker compose文件,所以他们所要做的就是运行
docker compose up-d
,然后将浏览器指向。这样,我就用同样简单的东西(对他们来说)取代了Conda但功能更强大。不过,我必须小心Mac上的Docker,因为Docker说有一些网络问题是苹果的错。想想另外一件事,对容器的调试支持现在不是很无缝,所以在本地运行python来执行类似附加调试器的操作我想更容易是的,你会看到的在你的Mac电脑上,谁知道如果你运行的是Windows,会发生什么呢?当然,不同的版本也会有问题。如果我们只担心开发人员,Docker是很方便的,因为他们只需要学习一种语言无关的软件,如果他们不想,他们不需要了解环境的任何信息。