掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站頁面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)絡(luò)公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。
加載完P(guān)ython的Docker鏡像后,順手又裝了個Python?
這樣的「誤會」,在你看完這篇對Python的Docker“正式版鏡像”的解讀后,就會煙消云散。
不僅可以了解到Docker鏡像的結(jié)構(gòu)、功能,還能對Docker的印象有所改觀:容器看起來真的比虛擬機(jī)好用!
下面以“Python正式版”為例,具體來了解一下Docker鏡像的用法和細(xì)節(jié)。
這個鏡像的基礎(chǔ)鏡像是Debian GNU/Linux 10,是Debian系統(tǒng)最新的一款名為Buster的版本。
Tips:Buster是《玩具總動員》中安迪的狗子,Debian開發(fā)組喜歡用這款電影里的角色命名系統(tǒng)版本。
也就是說,這是個基于Linux的鏡像,不僅能保證穩(wěn)定性,還能提供bug修復(fù)。
接下來,是文件中的環(huán)境變量。
務(wù)必確認(rèn)在PATH前面加路徑,也就是你安裝鏡像的地方,這樣能保證用到的是安裝的鏡像。
此外,也確認(rèn)一下語言的環(huán)境變量,不過Python3已經(jīng)默認(rèn)UTF-8,所以這一步不一定要做。
當(dāng)然,也可以確認(rèn)一下Python的最新版本(圖中是3.8.5)。
確認(rèn)環(huán)境變量后,是關(guān)于運(yùn)行依賴的事情。
事實(shí)上,為了能運(yùn)行,Python需要依賴一些額外的軟件包。
其中,ca-certificates相當(dāng)于一個證書列表,類似于瀏覽器用來驗(yàn)證 https://url/ 的證書,這也是Python,wget和其他工具用來驗(yàn)證服務(wù)器的證書。
至于netbase,則用來安裝一些/etc中的文件,通常用于將確切的名稱映射到某些端口。
例如,/etc/services就會映射到443/tcp端口上。
在那之后,就是Python的安裝了。
一個編譯器工具鏈會被安裝,而Python代碼也會被下載、編譯,而不需要的Debian安裝包也會被刪掉。
在這其中,最核心的部分有如下三點(diǎn):
1.Python會被安裝到/usr/local位置下
2.所有的.pyc文件都會被刪掉
3.一旦gcc等安裝包對編譯Python不再有用,那它們也會被刪掉
而所有的這些,都只需要通過RUN命令來實(shí)現(xiàn)。
也許你會注意到,在這個過程中,Python編譯了libbluetooth-dev。事實(shí)上,Python鏡像的確有藍(lán)牙接口,不過需要安裝對應(yīng)的安裝包。
此外,在設(shè)置別名上,在/usr/local/bin/python3和/usr/local/bin/python間,可以隨意選一個名稱來用(反正是一樣的)。
最后,是安裝pip,事實(shí)上,Docker會確保安裝的是新版本的pip,即它有自己的時間表,即使可能距離Python上一版發(fā)布已經(jīng)過了很久。
在這個過程中,所有的.pyc文件都會被刪除。
done!好了,怎么運(yùn)行?
事實(shí)上,一句話就夠了。
此外,如果在使用CMD時ENTRYPOINT為空,你的Python會在運(yùn)行鏡像時被默認(rèn)運(yùn)行。
也可以根據(jù)需要,指定其他可執(zhí)行文件。
雖然大多數(shù)人不會犯這個錯誤,不過對于一些新手小白來說,還是可能在裝上Python的Docker鏡像后,順手又裝了個Python。
這樣的話,會導(dǎo)致兩個Python在鏡像中「打架」,造成不必要的混亂。
此外,Python的官方圖片往往也包含了最新的pip。
雖然Python3.5的最后一個版本都是去年年末的事情了,不過即使是3.5的安裝,也會帶上最新的pip。
還要注意的一點(diǎn)是,這個鏡像安裝后會刪掉所有的.pyc文件。
此外,這個正式版鏡像并沒有安裝Debian的安全更新,可能需要你手動安裝一下。
經(jīng)過一番操作后,你就可以放心地使用Python的Docker鏡像,在上面運(yùn)行相應(yīng)的程序了。
那么,Docker到底與虛擬機(jī)有什么不同?
作為一個容器,Docker有點(diǎn)像虛擬機(jī),本質(zhì)上都是為了在不同環(huán)境中編寫的各種程序而生。
這是因?yàn)?,編程語言總是會隨著環(huán)境的更新而迭代,在Python更新了新版后,有人調(diào)侃Python2和Python3看起來根本不是一種語言。
如果開發(fā)了一個Python3的程序,但測試和生產(chǎn)的環(huán)境只裝了Python2,運(yùn)行過程中就可能出現(xiàn)各種雞飛狗跳的事情。
不過與虛擬機(jī)不同的是,Docker不用再自己裝個操作系統(tǒng)了,而這個東西,恰恰是最占地方的。
Docker將程序中要用到的各種環(huán)境「零件」和程序一起打包,做成一個鏡像,這樣使用者只需要加載這一個鏡像,就可以直接運(yùn)行程序。
相比于在電腦上加載好幾個虛擬機(jī),占用大半空間,Docker不失為只有一臺電腦時,運(yùn)行各種程序的好選擇。
Itamar Turner-Trauring有20多年的科學(xué)計(jì)算和分布式系統(tǒng)經(jīng)驗(yàn),寫過Twisted網(wǎng)絡(luò)框架,也在谷歌工作過,為Google Flight貢獻(xiàn)過后端C++代碼。
1996-2000年,Itamar Turner-Trauring在巴伊蘭大學(xué)和特拉維夫大學(xué)(以色列排名第二和第一的大學(xué))學(xué)習(xí)數(shù)學(xué)與計(jì)算機(jī)課程,并于2009年在哈佛大學(xué)取得文科學(xué)士學(xué)位,研究方向是人文學(xué)科。
現(xiàn)階段,Itamar Turner-Trauring會撰寫Python相關(guān)的技術(shù)文章,幫助開發(fā)者更快上手這款編程語言。
網(wǎng)站標(biāo)題:用這個Python的Docker正式版鏡像,你也能成容器高玩
文章轉(zhuǎn)載:http://uogjgqi.cn/article/djcijdg.html

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流