天天看點

Docker使用中可能遇到的問題

docker并不是一個新的技術,容器化也不是,早在2006年就陸續出現了lxc, openvz,jail等容器虛拟化技術,但是為什麼docker卻能異軍突起呢?docker的核心是基于 linux的cgroup、namespace和layeredfs技術,通過資源的控制、隔離和對鏡像的分層處理,是docker容器能夠将應用程式和運作環境打包到一起,這樣就可以build, ship and run anywhere。與其說是docker火,不如說是其天生的輕量級屬性,正好迎合了雲計算大行其道的今天。是以,筆者認為docker改變整個雲計算和網際網路的格局是遲早的事,但是docker在使用中,特别是在國内,又有什麼需要注意的問題呢?

Docker使用中可能遇到的問題

docker雖然說是一個開源的項目,但是如果你要在國内成功編譯它是一件非常困難的事情。docker是用go來開發的,go被譽為網際網路時代的c語言,由google主導開發,它的開發者包括了 chrome v8引擎和unix的開發者,是以它天生就是易用且簡介的。它具有良好的包管理、簡介的文法和非常好的靈活性。但是,在國内很多package,你是不一定能夠取下來的,這樣就導緻編譯過程很難進行。

如果你在國外,沒有gfw的限制,擁有非常好的網速,你使用docker就像是在開一輛跑車。但如果你在國内,就好比是開了一輛沒油的跑車。我曾經很多次遇到了安裝失敗的問題,而且安裝速度非常緩慢。同時,如果你要在全封閉的内網安裝docker就更麻煩,你需要将所有的安裝包完整遷移到内網,這個工作量是非常大的。下面就是一個官方安裝失敗的例子:

docker為什麼火,有一個重要的原因就是它開創性的分層鏡像機制,你的環境和應用程式都會被打包到鏡像中。但是,一個比較大的問題是,docker所有的鏡像都依賴于基礎鏡像,而這些基礎鏡像都在國外的docker hub上,當你興緻勃勃準備用docker大幹一場時,pull的漫長等待一定會讓你很抓狂,而最後的逾時失敗,更會讓你有說髒話的沖動。

dockerhub在國外這個問題還好,但是預設的dockerhub所有鏡像都是公開的,就是說你的鏡像别人都能夠下載下傳。這個政策跟github是一樣的,如果你要用免費的,那麼你就得開源。否則,給錢買私有倉庫吧。docker的私有倉庫價格是非常貴的,而且速度還很慢。你不可能需要共享鏡像時,都push到國外,再pull回來吧。當然有的人可能要說,我可以搭建私有倉庫。不過私有倉庫僅時候企業内部私有網絡使用,而且沒有基礎鏡像,如果你有跨區域的使用,是非常難處理的。

至少在我寫這篇文章的時候,不是每一家公有雲廠商的基礎鏡像都能順利的安裝docker,docker是輕量級的虛拟化技術不假,但它仍然不能在短期内替代vm。如果你要在vm上使用docker,需要對網絡、存儲等做一些特殊的處理。

docker是輕量級的不假,但是随着輕量以後,勢必會出現大量的容器和主機。本身使用docker的出發點是降低運維成本,提升效率,但是管理上的成本相反卻會上升。主機的監控、容器的監控、容器和容器之間的聯系等等,都需要專業的公司來處理。很多人可能會想,我可以使用kubernetes,mesos等開源架構,不過我想給你敲一個警鐘,如果你沒有10人以上的運維團隊,最好不要去碰這類架構。這類架構設計之初就是管理成千上萬台的主機,如果你沒有這麼大的量,一定會讓你日後的維護非常的酸爽。

容器有性能損失嗎?如果你要将系統搬遷到docker上,你是否會有擔憂?cpu、記憶體、磁盤io的性能到底如何?如何進行優化?這些都是需要大量測試和優化的。

容器到底安全嗎?容器是作業系統級的虛拟化技術,多個容器實際是共享了作業系統核心。容器的安全一直在不斷的向前發展,但是你必須要了解容器可能受攻擊的面有多大,如何來進行避免。

容器本身支援多達5種網絡模式,預設的方式隻是非常基礎的簡單應用,對于您的實際環境,則需要專門的特殊處理,才能是網絡性能達到最優化。

目前國内對linux比較熟悉的運維都是供不應求,而容器是建立在linux之上的,誠然容器可以提升開發、測試和運維的效率,但是這是建立在你有懂docker的運維的人員。據我所知,目前國内對docker很熟悉的運維人員非常少,docker的一手資料基本都是英文的,對英文非常熟悉的運維人員并不多。

對于上面的問題,其中的每一條都可能延伸出來很長的篇幅,這些都是筆者在實際開發和應用中遇到過的問題, docker的發展速度飛航快,到現在已經3年了,現在它已經從一個測試-釋出的工具,逐漸轉變成為基礎架構的組成部分,正式邁向産品化環境,但實際使用中依然有很多需要注意的地方。2016年3月31日,精靈雲(www.ghostcloud.cn) docker混合雲paas/caas正式上線,歡迎注冊使用。