Docker是什么?
為永春等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及永春網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、永春網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
為什么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ù)器上。
為什么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ā)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!