原文:https://snarky.ca/what-are-the-popular-docker-images-for-python/
由于開(kāi)發(fā)一個(gè)Python程序
時(shí)需要依賴大量的三方庫(kù)包懒叛,且python2和3
本身就有互不兼容的地方泞歉,我們往往需要一個(gè)隔離的環(huán)境灌侣,來(lái)避免版本影響造成的bug
被啼。 傳統(tǒng)的做法大多數(shù)人可能會(huì)選擇virtualenv
來(lái)隔離逐抑,但是它有很多明顯的缺點(diǎn):
1)無(wú)法提供完全的隔離
2)如果不想在正式環(huán)境中使用莱革,它就會(huì)造成差異果录,而使用docker運(yùn)行則解決了這個(gè)問(wèn)題买优。
但現(xiàn)在對(duì)于python
開(kāi)發(fā)運(yùn)行妨马,最流行的docker鏡像
是什么呢,我不知道答案杀赢,所以我在twitter
上 發(fā)起了一個(gè)調(diào)查:https://twitter.com/brettsky/status/925402634378395648
- Alpine: 54%
- Stretch (full or slim): 20%
- Jessie (full or slim): 15%
- Windows Server Core: 11%
這個(gè)結(jié)果令我驚訝烘跺,我沒(méi)想到Alpine
排名這么高,因?yàn)橐皇谴蠹移鋵?shí)并不熟悉這個(gè)系統(tǒng)脂崔,第二是現(xiàn)在Alpine
好像并不能兼容其他系統(tǒng)的wheel
滤淳。
在twitter
上也有人說(shuō),python
在Alpine Linux
的運(yùn)行速度不如Debian,
因?yàn)閜ython依賴的musl沒(méi)有被優(yōu)化過(guò)砌左,我不知道這是不是普遍現(xiàn)象脖咐,還是僅僅那些人的特殊情況。
有人說(shuō)我這個(gè)投票里面沒(méi)有放Anaconda 汇歹,我就把它放進(jìn)去重新做了一次屁擅,結(jié)果如下:
- anaconda3:38%
- miniconda: 30%
- Alpine: 24%
- other: 8%
現(xiàn)在結(jié)果向Anaconda傾斜了,Anaconda的創(chuàng)始人Peter Wang 轉(zhuǎn)推了這次投票产弹,但是盡管如此派歌,Alpine的比例仍然很高。我也很驚訝miniconda
的占比取视,盡管它比Anaconda image
更小硝皂,更輕量級(jí),不過(guò)除非他有很好的表現(xiàn)作谭,我現(xiàn)在不太鼓勵(lì)用miniconda
稽物。
這個(gè)調(diào)查并不是很正規(guī),但對(duì)于核心開(kāi)發(fā)者折欠,提供一個(gè)基于Alpine的buildbot 的確是有用的贝或,而對(duì)于python
用戶吼过,可以考慮下用用Alpine
了。
個(gè)人想法
日常開(kāi)發(fā)使用的話咪奖,每個(gè)人使用的環(huán)境都不太一樣盗忱,一般用戶會(huì)選擇在本地裝anaconda
來(lái)開(kāi)發(fā),所以我們對(duì)于開(kāi)發(fā)環(huán)境不多說(shuō)羊赵,對(duì)于正式環(huán)境的話趟佃,已經(jīng)有開(kāi)發(fā)者發(fā)現(xiàn)alpine
的環(huán)境運(yùn)行速度慢于stretch
,所以我的建議是如果對(duì)于鏡像和打包速度沒(méi)有刻意的追求和完整的測(cè)試的話昧捷,建議使用stretch版本
闲昭。