康达在集装箱内的目的是什么?
我已经看到很多使用conda命令的dockerfiles例子。 还有预先build立的anaconda和miniconda容器。 我肯定错过了什么。
docker REPLACE virtualenv和conda? 我不应该在我的dockerfile中拥有所有的依赖关系吗? 我不明白从这里添加anaconda我得到了什么。 事实上,如果我不得不使用所有的miniconda包含的模块,我必须拉一个miniconda容器,这似乎使我的容器不必要地变大了。
Docker不能取代任何东西。 这只是一种做事的方式。
不,你不应该在你的Dockerfile中拥有所有的依赖。 举个例子,我会从virtualenv运行pip install
,除非我有一个很好的理由,否则不会触及Docker / * conda。 你缺乏requirements.txt是不是一个好的理由:)
Conda在2012年出现了 – 在Docker之前。 由于Python在非程序员社区中有如此强大的追随者,我很less期望可以理解的代码,更不用说某种types的DevOps能力。 康达是这个组织的完美解决scheme。
使用Docker,您可以使用FROM python:xx
, COPY . /workdir
来创build一个function正常的Docker环境COPY . /workdir
COPY . /workdir
和RUN pip install -r requirements.txt
(假设你正在使用这个文件),但是你的开发人员可能需要一个卷才能工作(所以他们需要知道--volume
。重新运行Django,你需要configuration端口(现在他们需要--port
而你需要EXPOSE
)哦,Django也可能需要一个数据库,现在你需要另一个容器,并且你正在编写一个docker-compose文件。
但是,从几乎所有的专业(DevOps)经验中,如果您只包含requirements.txt,
- 我可以在我的Docker容器中使用该文件
- 这些要求都在一个地方
- 如果我想的话,我可以在当地发展
- Travis可以从requirements.txt安装,并在不使用Tox的情况下在多个版本上进行testing
- Setuptools自动处理,所以我的事情与点
- 我可以将这些Docker文件(或部分)与ECS,Kubernetes等重复使用
- 我可以部署到EC2而不使用Docker
- 我可以通过pip在本地安装软件包
HTH–不要太拘泥于一项技术!