首頁>Club>
Docker又是什麼?你對新技術怎麼看?
4
回覆列表
  • 1 # IT168企業級

    Go語言

    今年是Go語言釋出的第八個年頭,對於Go語言來說也是一個非常值得慶祝的生日,這八年間Go語言不斷更新功能來鞏固其作為雲基礎架構語言的地位,也從一個默默無聞的小卒成長為話題度頗高的流行語言。

    Go語言八週年之際,Steve Francia 如此寫道:

    自Go首次公開原始碼以來,我們總計已經進行了10次語言,庫和工具的釋出更新,超過1680名貢獻者向該專案的34個儲存庫提交了超過5萬次的commit; 貢獻者數量增加了一倍多,僅兩年前就增加了一倍。今年我們宣佈了關於Go 2的計劃 ,這將是我們對Go語言和工具的第一次重大修訂。

    Go 1.0版本釋出於2012年,雖然後續版本中增加了很多新功能,但這絲毫不妨礙它是一個非常穩定的語言。Go語言七週年的時候,Sue Gee發表了《Go Turns Seven With Lots Of Attention》,如今它已更新了兩個版本,1.8版本的編譯器後端有了很大的改進,可以減少垃圾收集暫停,從而提高編譯後端的速度;1.9版本增加了對並行編譯的支援,並引入了類型別名來支援程式碼修復。

    Go語言是否真的流行起來了呢?對此,Francia表示:

    Go已被世界各地的開發人員所接受,目前約有100萬用戶。在剛剛釋出的報告中,Go語言在最受歡迎的程式語言中位列第九,成功超越了C語言。同時,Go語言也成功躋身GitHub 2017增長最快的程式語言,與上一年相比增長52%,而JavaScript則以44%的增長率從去年的第一位下降到第二位。

    在Stack Overflow的2017年開發者調查中,Go是唯一一個既是程式設計師最喜歡的程式語言Top 5也是最需要的程式語言Top 5。使用過Go語言的人都會深深愛上它,沒有使用Go語言的人都想擁有它。

    繼2009年之後,2016年Go語言再度成為了TIOBE年度語言。

    上圖顯示了從2010年到2017年11月,Go語言在TIOBE上的變化曲線。2016年中期,GO 語言實現了直線快速增長,並很快達到最高峰,不過最近幾個月中回落了不少,目前在TIOBE上排名14。

    如今,Go語言還在不斷擴大,雲會是很重要的方向。其博文稱:

    Go已經成為雲基礎架構的語言。今天,每個雲公司都擁有在Go中實施雲基礎架構的關鍵元件,包括Google Cloud,AWS,Microsoft Azure,Digital Ocean,Heroku等等。Go是阿里巴巴,Cloudflare和Dropbox等雲計算公司的重要組成部分。Go是開放式基礎設施的重要組成部分,包括Kubernetes,Cloud Foundry,Openshift,NATS,Docker,Istio,Etcd,Consul,Juju等等。越來越多的公司選擇Go來構建雲基礎架構解決方案

    過去的成績固然值得驕傲,但是對於Go語言和程式設計師來說,更重要的是在2.0版本會有哪些新功能引入?讓我們一起期待吧!

    Docker技術:

    最近,我們可能經常會聽到一種說法"Docker正在徹底改變IT!"這種說法是否存在炒作嫌疑呢?Docker對於現有格局的破壞性到底在哪裡?Docker和虛擬機器之間有什麼區別?Docker真正的附加價值在哪裡?

    我們與Docker大牛Nicolas De Loof探討了這些問題。

    問:您是如何與Docker結緣的呢?

    Nicolas De Loof:我工作的公司 CloudBees是dotCloud的競爭對手。我與Docker的第一次接觸大多是負面的,因為它當時的執行是非常不靈活的。後來,我漸漸發現了不可變基礎架構的好處,以及Docker如何讓這一切變得更易於實現。

    與此同時,我們關閉了PaaS優惠,我開始做更多的嘗試,Docker自然的走入了我的生活。

    問:我們經常聽到"Docker正在徹底改變IT",你認同這種觀點嗎?Docker技術有什麼破壞性?

    Nicolas De Loof:容器並不是什麼新鮮事物,谷歌已經使用了十年了,之前許多運營團隊都採用了LXC。那麼是什麼讓人們開始覺得“Docker有破壞性”呢?是因為它定義了一個更高的層次,以使用者為中心的“distributing and running stuff”抽象。

    Docker的主要價值在於分發映象格式和管道。runtime也非常棒,因為它提供了合理的預設設定,很多東西可以直接使用,當然有經驗的使用者也可以調整runtime,實現細粒度的控制。

    問:Docker與普通虛擬機器有什麼不同?

    Nicolas De Loof:Docker與虛擬機器的技術角度不同,當然這並不表示它們是完全對立的,事實上我們可以使用虛擬機器來實現Docker。但對於大多數使用者來說虛擬機器的建立和管理是一成不變的,事實上它也需要我們升級維護。

    虛擬機器是一個完整系統,所以出現問題時很難找到根源所在。Docker與虛擬機器並不是互斥的,他們是不同用途的互補技術,虛擬機器允許使用者透過API管理主機,並提供基礎設施的彈性。與此同時,Docker允許將軟體定義為小型樂高塊來組裝,因此它們採用了不變的基礎架構,微服務,分散式軟體等現代架構。

    問:您如何在日常工作中使用Docker?

    Nicolas De Loof:就我個人來說,比較依賴Docker進行各種測試,所以我要確保有一個可以與他人共享的可再生環境,防止對我工作站的影響。

    除此之外,公司還提供了基於Docker的彈性CI / CD解決方案“CloudBees Jenkins Enterprise”,作為Docker專家,我會嘗試讓它採用最好的Docker特性。

    問:使用Docker時您遇到過什麼問題?您認為目前存在的挑戰是什麼?

    Nicolas De Loof:資料永續性是Docker使用者最容易誤解的元素。有人說,在Docker中不能執行資料庫,也許他們只是錯過了文件中的“volumes”一章?

    當一個人試圖從多個容器訪問它們時,就會遇到許可權問題,這時如果我們試圖以“繫結掛載”的方式來管理時,情況會變得更糟,而不會讓docker daemon執行voodoo setup。

    這並不是一個微不足道的問題,我希望Linux核心/檔案系統驅動程式的上游功能做一些更改,以便更易於使用。

    問:關於Docker生態系統的演變,您如何評價Docker決定 向CNCF 捐贈containerd runtime ?

    Nicolas De Loof:正如我所說,Docker的技術價值不在container runtime,這並不是一個巨大的複製工程。但對於生態系統健康,它們需要確保信任和互操作性,因此必須有一個開放標準和參考實現。

    作為一個Java開發人員,我需要對這個方法有一個標準的API文件和參考實現,這並不能防止替代的實現或創新。Docker採用了一種獨特的方法:證明了可以工作,然後提取一個開源元件,並確保它成為由OCI驅動的標準化容器生態系統的一部分。

    問:您希望在下一個Docker發行版中看到什麼功能?

    Nicolas De Loof: 首先,我希望獲得無特權巢狀容器“Docker in Docker”的支援。DinD的額外特權使得它很難安全,但在我的CI / CD用例的另一邊,我需要讓使用者在dockerized構建環境中執行docker。這在技術上是可行的,因為LXD依賴Linux核心可以做到。

    我希望看到的另一個特性是在容器級別實現的使用者名稱稱空間,我可以在每個容器的基礎上配置使用者ID對映。有了檔案系統的支援,這就使得組裝容器和完全支援共享volume變得很瑣碎。但這是一個長期的努力,因為這仍然需要Linux核心檔案系統中的一些修復(工作正在進行中)。

    問:您能分享一個您在使用Docker時最喜歡的技巧嗎?

    Nicolas De Loof:考慮到不可變的基礎設施,有很多中介軟體使用檔案系統作為快取,並且可能希望避免這種永續性。因此,我喜歡將它們作為只讀容器(docker run -read-only)來約束它們,以確切地知道它們需要訪問檔案系統的位置,然後為實際的持久資料目錄建立一個volume,併為其他所有東西(通常是快取或日誌檔案)建立一個tmpfs。

  • 中秋節和大豐收的關聯?
  • 如何鑑別真假豬血和鴨血?