首先我們現在主流的服務都是使用Unix/Linux作業系統的,而Golang對於第三方的依賴相當的少,這點既是限制,也是優勢。這樣的話使用Golang開發的Docker基本上能夠完美的運行於大多數安裝Unix/Linux作業系統的伺服器上。
為什麼Docker運行不需要安裝Golang?
提出為什麼Docker運作不需要安裝Golang這個問題是因為自己是個Java後台開發,而在Ubuntu上使用的一些用Python開發的開源工具,而Java和Python的開源工具都要安裝對應的運作環境:
Java起碼要安裝JRE,有時候為了方便也會安裝JDK
Python起碼需要安裝Python開發環境,有時候開源工具還要安裝其他Python的第三方套件
以Java為例子,Java原始程式經過編譯器編譯後變成字節碼,字節碼由虛擬機器解釋執行,虛擬機器將每一條要執行的字節碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行。而無論是編譯器還是解釋器其實都是JVM的一部分。 Java的平台無關其實是靠JVM實現的,同時Java的程式也需要在JVM上運作。
但是Golang編譯產生的是一個靜態可執行文件,除了glibc外沒有其他外部依賴。
那麼glibc到底是什麼呢?
其實glibc是GNU發布的libc函式庫,也就是c運行庫。 glibc是linux系統中最底層的api,幾乎其它任何運作函式庫都會依賴glibc。這也意味著docker在Unix/Linux系統上運作其實可以拋開Golang。
為什麼Docker選擇用Golang開發?
首先我們現在主流的服務都是使用Unix/Linux作業系統的,而就如前面所描述的那樣Golang對於第三方的依賴相當的少(只依賴glibc) ,這點既是限制,也是優勢。因為這樣的話使用Golang開發的Docker基本上能夠完美的運行於大多數安裝Unix/Linux作業系統的伺服器上。
以上是docker為什麼用go語言寫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!