最适合Python开发的Docker镜像

举报
lateautumn4lin 发表于 2019/10/16 00:55:33 2019/10/16
【摘要】 由于开发一个Python程序时需要依赖大量的三方库包,且python2和3本身就有互不兼容的地方,我们往往需要一个隔离的环境,来避免版本影响造成的bug。 传统的做法大多数人可能会选择virtualenv来隔离,但是它有很多明显的缺点:1)无法提供完全的隔离2)如果不想在正式环境中使用,它就会造成差异,而使用docker运行则解决了这个问题。但现在对于python开发运行,最流行的docke...

由于开发一个Python程序时需要依赖大量的三方库包,且python2和3本身就有互不兼容的地方,我们往往需要一个隔离的环境,来避免版本影响造成的bug。 传统的做法大多数人可能会选择virtualenv来隔离,但是它有很多明显的缺点:

1)无法提供完全的隔离

2)如果不想在正式环境中使用,它就会造成差异,而使用docker运行则解决了这个问题。

但现在对于python开发运行,最流行的docker镜像是什么呢,我不知道答案,所以我在twitter上 发起了一个调查:https://twitter.com/brettsky/status/925402634378395648

  1. Alpine: 54%

  2. Stretch (full or slim): 20%

  3. Jessie (full or slim): 15%

  4. Windows Server Core: 11%

这个结果令我惊讶,我没想到Alpine排名这么高,因为一是大家其实并不熟悉这个系统,第二是现在Alpine好像并不能兼容其他系统的wheel

twitter上也有人说,pythonAlpine Linux的运行速度不如Debian,因为python依赖的musl没有被优化过,我不知道这是不是普遍现象,还是仅仅那些人的特殊情况。

有人说我这个投票里面没有放Anaconda ,我就把它放进去重新做了一次,结果如下:

  1. anaconda3:38%

  2. miniconda: 30%

  3. Alpine: 24%

  4. other: 8%

现在结果向Anaconda倾斜了,Anaconda的创始人Peter Wang 转推了这次投票,但是尽管如此,Alpine的比例仍然很高。我也很惊讶miniconda的占比,尽管它比Anaconda image更小,更轻量级,不过除非他有很好的表现,我现在不太鼓励用miniconda

这个调查并不是很正规,但对于核心开发者,提供一个基于Alpine的buildbot 的确是有用的,而对于python用户,可以考虑下用用Alpine了。

个人想法

日常开发使用的话,每个人使用的环境都不太一样,一般用户会选择在本地装anaconda来开发,所以我们对于开发环境不多说,对于正式环境的话,已经有开发者发现alpine的环境运行速度慢于stretch,所以我的建议是如果对于镜像和打包速度没有刻意的追求和完整的测试的话,建议使用stretch版本


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。