Docker這個新軟件究竟是用來干嘛的???
http://dockone.io/article/378
嘗試新軟件
對開發者而言,每天會催生出的各式各樣的新技術都需要嘗試,然而開發者卻不太可能為他們一一搭建好環境并進行測試。時間非常寶貴,正是得益于?docker,讓我們有可能在一條或者幾條命令內就搭建完環境。Docker?有一個傻瓜化的獲取軟件的方法,Docker?后臺會自動獲得環境鏡像并且運行環境。
并不僅僅是新技術環境搭建用得到?Docker。如果你想快速在你的筆記本上運行一個?MySQL?數據庫,或者一個?Redis?消息隊列,那么使用?Docker?便可以非常容易地做到。例如
Docker?只需要一條命令便可以運行?MySQL?數據庫:
docker run -d -p 3306:3306 tutum/mysql。
譯者注:雖然使用命令也能非常快地安裝?MySQL?數據庫,但是當用到最新的技術或者非常復雜的技術時,使用?Docker?便會是個非常好的選擇,例如?:
事件
普通用戶
Docker用戶
安裝Gitlab
一天
一條命令
進行演示
現在我經常需要在周末用自己開發的成果對客戶活著別人做一兩個演示。搭建演示環境的過程非常麻煩。現在我發現?Docker?已經成為我演示這些工具的最合理的方式。
對于客戶來說,我可以直接將?Docker?鏡像提供給他們,而不必去做任何環境配置的工作,工作的效果也會和在他們演示中所看到的一模一樣,同時不必擔心他們的環境配置會導致我們的產品無法運行。
避免“我機器上可以運行”(而別人的機器不可以)
無論是企業部署?Docker?還是本文的個人?Docker?用例,都提到了這個情況。因為環境配置不同,很多人在開發中也會遇到這個情況,甚至開發的軟件到了測試人員的機器上便不能運行。但這都不是重點。重點是,如果我們有一個可靠的、可分發的標準開發環境,那么我們的開發將不會像現在這么痛苦。Docker?便可以解決這個問題。Docker?鏡像并不會因為環境的變化而不能運行,也不會在不同的電腦上有不同的運行結果。可以給測試人員提交含有應用的?Docker?鏡像,這樣便不再會發生“在我機器上是可以運行的”這種事情,很大程度上減輕了開發人員測試人員互相檢查機器環境設置帶來的時間成本。
另一個?Docker?可以發揮用處的地方是培訓班。除了?Docker?容器的隔離性之外,更能體會到?Docker?優勢的地方在于環境搭建。培訓班的新手每個人都要在環境搭建上花費很多時間,但是如果在這里應用到?Docker?的話,那么我們只需要把標準的運行環境鏡像分發下去,然后就可以開始上課了。使用?Docker?和使用虛擬機一樣簡單,但是?Docker?要更方便、更輕量級。同時,我們也可以告訴學員:“在培訓的同時,我們還將學到當下最流行的技術——Docker”,這種雙贏的結局,何樂而不為呢。
更好地利用資源
虛擬機的粒度是“虛擬出的機器”,而?Docker?的粒度則是“被限制的應用”,相比較而言?Docker?的內存占用更少,更加輕量級。
對我來說這是?Docker?的一個優勢:因為我經常在自己電腦中運行多個?Docker?應用,使用?Docker?比使用虛擬機更加簡單,方便,粒度更細,也能持續地跟蹤容器狀態。
為微服務定制
如果你一直在關注科技新聞的話,那么你應該聽說過“微服務(Microservices)”的概念。Docker?可以很好地和微服務結合起來。從概念上來說,一個微服務便是一個提供一整套應用程序的部分功能,Docker?便可以在開發、測試和部署過程中一直充當微服務的容器。甚至生產環境也可以在?Docker?中部署微服務。
在云服務提供商之間移植
大多數的云主機提供商已經全面支持?Docker。對于開發人員來說,這表示你可以很方便地切換云服務提供商,當然也可以很方便地將你本地的開發環境移動到云主機上,不需要本地上配置一次運行環境、在云主機上還配置一次運行環境。全面部署?Docker (Docker here and Docker there)?作為標準運行環境可以極大地減輕應用上線時的工作量和產生?BUG。
API?端
API?是應用之間的粘合劑,一個合格開發者肯定使用過別人提供的?REST API,或者自己開發過?REST API。需要指出的是,無論是客戶端還是?API?提供端,在開發之前都需要先定義一組公共的?API?接口,寫成文檔,然后才能進行編碼。如果服務端和客戶端是共同開發的話,那么服務端通常會先實現能返回固定字符串的?API?接口,在以后的開發中再慢慢去實現?API?的功能。
雖然有人會認為在這里?Docker?被濫用了,完全可以用?sample.json?這種文件去實現虛擬?API,但是下面有個實例可以更好地解決前后端分離開發時的?API?問題。
為了更好地解釋我的意思,給大家提供一個實例:JSON Server,一個用于提供?JSON?數據的?REST API。使用過這個容器的人就會知道,既然有這么好用的?Docker JSON Server,我們沒有理由不用?Docker。
譯者注:
運行示例的?JSON Server,同時使用示例中提供的?JSON?文件,只需執行一條命令便可以創建一個服務端的?API?應用。
使用?curl?http://127.0.0.1:80/posts?即可獲取示例文件中的?posts?段,這樣在后端沒有開發完?API?的時候,前端一樣可以進行協同開發。
技術的創新
這點應該算不上是用例,但是我還是來寫一下。Docker?正在快速發展,工具也在不斷更新,沒有人能預見到未來?Docker?會是什么樣子的。你在復雜的系統中?Docker?使用的越多,越是可能會發現技術上的空白和未來技術發展的方向。現在還處在?Docker?的發展期,任何你使用?Docker?創建的工具都有可能成為社區關注的熱點。這是?Docker?的機會,也是成就你自己的機會。
其他
還有兩個技巧可以分享給你們。在學習?Docker?的過程中因為有了這兩個的幫助,我才得意不斷地提升自己。
一:Docker Hub Registry。這是?Docker?的官方鏡像倉庫,除了托管著?Docker?官方的鏡像外,和?Github?一樣,你可以在上面上傳自己的鏡像,也可以在上面搜尋其他有用的鏡像,極大地節省自己的時間。例如?Oracle-XE-11g?鏡像,所有的一切都是現成的,完全不需要自己去下載?Oracle XE 11g?安裝。這樣為你和團隊節約了大量的時間成本。
如果你不太確定的話,可以去?Docker Hub?上搜有一下有沒有自己用得到的鏡像。大部分情況下你所需要的鏡像在?Docker Hub?上都已經有人構建了。
二:多參考?IaaS?供應商的新聞,雖然我們不能像在他們會議室里那樣完全了解他們的公司動態,但是仍然可以從新聞中可以了解到Docker?最新的發展方向和技術趨勢。可以肯定的是,容器化技術是未來的熱點,我們不僅可以在本機運行?Docker,不僅僅在一家云服務提供商的主機上運行?Docker,未來所有的云服務提供商都會支持?Docker。
Docker?前景很明確,采用?Docker?只會讓開發變得更方便。
Docker 容器 微服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。