最适合Python开发的Docker镜像
由于开发一个Python程序
时需要依赖大量的三方库包,且python2和3
本身就有互不兼容的地方,我们往往需要一个隔离的环境,来避免版本影响造成的bug
。 传统的做法大多数人可能会选择virtualenv
来隔离,但是它有很多明显的缺点:
1)无法提供完全的隔离
2)如果不想在正式环境中使用,它就会造成差异,而使用docker运行则解决了这个问题。
但现在对于python
开发运行,最流行的docker镜像
是什么呢,我不知道答案,所以我在twitter
上 发起了一个调查:https://twitter.com/brettsky/status/925402634378395648
Alpine: 54%
Stretch (full or slim): 20%
Jessie (full or slim): 15%
Windows Server Core: 11%
这个结果令我惊讶,我没想到Alpine
排名这么高,因为一是大家其实并不熟悉这个系统,第二是现在Alpine
好像并不能兼容其他系统的wheel
。
在twitter
上也有人说,python
在Alpine Linux
的运行速度不如Debian,
因为python依赖的musl没有被优化过,我不知道这是不是普遍现象,还是仅仅那些人的特殊情况。
有人说我这个投票里面没有放Anaconda ,我就把它放进去重新做了一次,结果如下:
anaconda3:38%
miniconda: 30%
Alpine: 24%
other: 8%
现在结果向Anaconda倾斜了,Anaconda的创始人Peter Wang 转推了这次投票,但是尽管如此,Alpine的比例仍然很高。我也很惊讶miniconda
的占比,尽管它比Anaconda image
更小,更轻量级,不过除非他有很好的表现,我现在不太鼓励用miniconda
。
这个调查并不是很正规,但对于核心开发者,提供一个基于Alpine的buildbot 的确是有用的,而对于python
用户,可以考虑下用用Alpine
了。
个人想法
日常开发使用的话,每个人使用的环境都不太一样,一般用户会选择在本地装anaconda
来开发,所以我们对于开发环境不多说,对于正式环境的话,已经有开发者发现alpine
的环境运行速度慢于stretch
,所以我的建议是如果对于镜像和打包速度没有刻意的追求和完整的测试的话,建议使用stretch版本
。
- 点赞
- 收藏
- 关注作者
评论(0)