開發者可以使用Docker做什麼?

有些開發者可能還是不明白 Docker 對自己到底有多大的用處,因此翻譯 Docker 個人用例 這篇文章中來介紹 Docker 在普通開發者開發過程中的用例。

Docker 如今贏得了許多關注,很多人覺得盛名之下其實難副,因爲他們仍然搞不清 Docker 和普通開發者到底有什麼關係。許多開發者覺得 Docker 離自己很遠,Docker 是生產環境中的工具,和自己無關。我也是花了很長時間纔想清楚作爲普通開發人員如何在自己的開發中使用 Docker。坦率地說,我仍處在學習的過程中。

這篇文章提供了一個 Docker 用例列表,我希望它能更好地幫助你理解 Docker 並引發你的思考。本文只是描述 Docker 在普通開發者日常的應用,並不提供完整的解決方案。

在介紹用例之前,我希望你能先記住這句話:“Docker 是一個便攜的應用容器”。你可以不知道 Docker 所說的的“便攜式容器”到底是什麼意思,但是你必須清楚 Docker 在日常中能帶來非常大的效率提升。

當你需要在容器內運行自己的應用(當然可以是任何應用),Docker 都提供了一個基礎系統鏡像作爲運行應用時的基礎系統。也就是說,只要是 Linux 系統上的應用都可以運行在 Docker 中。

可以在 Docker 裏面運行數據庫嗎?當然可以。

可以在 Docker 裏面運行 Node.js 網站服務器嗎?當然可以。

可以在 Docker 裏面運行 API 服務器嗎?當然可以。

Docker 並不在乎你的應用程序是什麼、做什麼,Docker 提供了一組應用打包、傳輸和部署的方法,以便你能更好地在容器內運行任何應用。

下面的例子我自己經常使用,當然你有更好的案例也可以分享給我。

嘗試新軟件

對開發者而言,每天會催生出的各式各樣的新技術都需要嘗試,然而開發者卻不太可能爲他們一一搭建好環境並進行測試。時間非常寶貴,正是得益於 Docker,讓我們有可能在一條或者幾條命令內就搭建完環境。Docker 有一個傻瓜化的獲取軟件的方法,Docker 後臺會自動獲得環境鏡像並且運行環境。

並不僅僅是新技術環境搭建用得到 Docker。如果你想快速在你的筆記本上運行一個 MySQL 數據庫,或者一個 Redis 消息隊列,那麼使用 Docker 便可以非常容易地做到。例如 Docker 只需要一條命令便可以運行 MySQL 數據庫:docker run -d -p 3306:3306 tutum/mysql。

譯者注:雖然使用命令也能非常快地安裝 MySQL 數據庫,但是當用到最新的技術或者非常複雜的技術時,使用 Docker 便會是個非常好的選擇,例如 Gitlab,普通用戶大概需要一天的時間去搭建 Gitlab 平臺,而 Docker 則只需要一條命令。

進行演示

現在我經常需要在週末用自己開發的成果對客戶活着別人做一兩個演示。搭建演示環境的過程非常麻煩。現在我發現 Docker 已經成爲我演示這些工具的最合理的方式。同時,對於客戶來說,我可以直接將 Docker 鏡像提供給他們,而不必去做任何環境配置的工作,工作的效果也會和在他們演示中所看到的一模一樣,同時不必擔心他們的環境配置會導致我們的產品無法運行。

避免“我機器上可以運行”

無論是上一篇介紹的企業部署 Docker 還是本文的個人 Docker 用例,都提到了這個情況。因爲環境配置不同,很多人在開發中也會遇到這個情況,甚至開發的軟件到了測試人員的機器上便不能運行。但這都不是重點。重點是,如果我們有一個可靠的、可分發的標準開發環境,那麼我們的開發將不會像現在這麼痛苦。Docker 便可以解決這個問題。Docker 鏡像並不會因爲環境的變化而不能運行,也不會在不同的電腦上有不同的運行結果。可以給測試人員提交含有應用的 Docker 鏡像,這樣便不再會發生“在我機器上是可以運行的”這種事情,很大程度上減輕了開發人員測試人員互相檢查機器環境設置帶來的時間成本。

另一個 Docker 可以發揮用處的地方是培訓班。除了 Docker 容器的隔離性之外,更能體會到 Docker 優勢的地方在於環境搭建。培訓班的新手每個人都要在環境搭建上花費很多時間,但是如果在這裏應用到 Docker 的話,那麼我們只需要把標準的運行環境鏡像分發下去,然後就可以開始上課了。使用 Docker 和使用虛擬機一樣簡單,但是 Docker 要更方便、更輕量級。同時,我們也可以告訴學員:“在培訓的同時,我們還將學到當下最流行的技術——Docker”,這種雙贏的結局,何樂而不爲呢。

學習 Linux 腳本

當然這個原因看起來可能很奇怪,但是對不不熟悉 Linux 操作系統和 Shell 腳本的人來說,確實是一個好機會。即便本文並不是在講 Linux,Linux 的重要度仍然不言而喻。如果你用的是 Windows,那麼我給你一個建議:從雲主機提供商那兒租用一臺雲主機:我推薦使用 CoreOS 系統的雲主機。雖然這樣並不會讓你成爲專業的 Linux 運維,但是可以讓你快速地學到 Linux 基礎知識,愛上命令行操作,並且慢慢開始熟悉和欣賞 Linux。

更好地利用資源

虛擬機的粒度是“虛擬出的機器”,而 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 的方式,歡迎留言。

其他

還有兩個技巧可以分享給你們。在學習 Docker 的過程中因爲有了這兩個的幫助,我才得意不斷地提升自己。

一:Docker Hub Registry。這是 Docker 的官方鏡像倉庫,除了託管着 Docker 官方的鏡像外,和 Github 一樣,你可以在上面上傳自己的鏡像,也可以在上面搜尋其他有用的鏡像,極大地節省自己的時間。例如 Oracle-XE-11g 鏡像,所有的一切都是現成的,完全不需要自己去下載 Oracle XE 11g 安裝。這樣爲你和團隊節約了大量的時間成本。

如果你不太確定的話,可以去 Docker Hub 上搜有一下有沒有自己用得到的鏡像。大部分情況下你所需要的鏡像在 Docker Hub 上都已經有人構建了。

二:多參考 IaaS 供應商的新聞,雖然我們不能像在他們會議室裏那樣完全瞭解他們的公司動態,但是仍然可以從新聞中可以瞭解到 Docker 最新的發展方向和技術趨勢。可以肯定的是,容器化技術是未來的熱點,我們不僅可以在本機運行 Docker,不僅僅在一家雲服務提供商的主機上運行 Docker,未來所有的雲服務提供商都會支持 Docker。

Docker 前景很明確,採用 Docker 只會讓開發變得更方便。

原文鏈接:dockone.io/article/378

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章