您好,登錄后才能下訂單哦!
為什么Docker運(yùn)行不需要安裝Golang?可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
Docker 是 PaaS 提供商 dotCloud 開源的一個(gè)基于 LXC 的高級(jí)容器引擎,源代碼托管在 Github 上, 基于go語言并遵從Apache2.0協(xié)議開源。Docker雖然是用Golang編寫的,但是卻不需要安裝Golang就可以直接運(yùn)行了。
為什么Docker運(yùn)行不需要安裝Golang?
提出為什么Docker運(yùn)行不需要安裝Golang這個(gè)問題是因?yàn)楸救耸莻€(gè)Java后臺(tái)開發(fā),而在Ubuntu上使用的一些用Python開發(fā)的開源工具,而Java和Python的開源工具都要安裝對(duì)應(yīng)的運(yùn)行環(huán)境:
● Java起碼要安裝JRE,有時(shí)候?yàn)榱朔奖阋矔?huì)安裝JDK
● Python起碼需要安裝Python開發(fā)環(huán)境,有時(shí)候開源工具還要安裝其他Python的第三方包
以Java為例子,Java源程序經(jīng)過編譯器編譯后變成字節(jié)碼,字節(jié)碼由虛擬機(jī)解釋執(zhí)行,虛擬機(jī)將每一條要執(zhí)行的字節(jié)碼送給解釋器,解釋器將其翻譯成特定機(jī)器上的機(jī)器碼,然后在特定的機(jī)器上運(yùn)行。而無論是編譯器還是解釋器其實(shí)都是JVM的一部分。Java的平臺(tái)無關(guān)性其實(shí)是靠JVM實(shí)現(xiàn)的,同時(shí)Java的程序也需要運(yùn)行在JVM上。
但是Golang編譯生成的是一個(gè)靜態(tài)可執(zhí)行文件,除了glibc外沒有其他外部依賴。
那么glibc到底是什么呢?
其實(shí)glibc是GNU發(fā)布的libc庫,即c運(yùn)行庫。glibc是linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫都會(huì)依賴于glibc。這樣也意味著docker在Unix/Linux系統(tǒng)上運(yùn)行其實(shí)可以拋開Golang。
為什么Docker選擇用Golang開發(fā)?
首先我們現(xiàn)在主流的服務(wù)都是使用Unix/Linux操作系統(tǒng)的,而Golang對(duì)于第三方的依賴相當(dāng)?shù)纳伲ㄖ灰蕾噂libc),這點(diǎn)既是限制,也是優(yōu)勢(shì)。因?yàn)檫@樣的話使用Golang開發(fā)的Docker基本能夠完美的運(yùn)行于大多數(shù)安裝Unix/Linux操作系統(tǒng)的服務(wù)器上。
總結(jié)
很多編程語言是會(huì)存在一些局限性和缺點(diǎn),但是我們要根據(jù)自己的需要去選擇編程語言,有時(shí)候在特定的場(chǎng)景上選擇一個(gè)更加合適的編程語言或者會(huì)帶來更大的收益。這點(diǎn)也適用于框架的選擇上,不一定是大家所說的高大上或者流行的框架就是好的,適合于自己的業(yè)務(wù)才是最好的。
看完上述內(nèi)容,你們對(duì)Docker運(yùn)行不需要安裝Golang的原因有進(jìn)一步的了解嗎?如果還想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。