Docker:構建API的簡潔高效之道
本文由碼農網 – 任琦磊原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
在API的領域內,目前很少有名字能像Docker一樣如雷貫耳。Docker之所以能夠成為一個開發者們熱捧的開源平臺,是因為它能夠僅僅通過一個應用程式,就向API使用者提供一個完整的開發生態系統。
Docker的流行並不難被理解。Docker是一個易用的系統,它能夠將程式碼、執行、系統工具和庫整合在一起——基本上囊括了你能夠安裝到一臺伺服器上的所有東西。所以,它使得開發者們能夠輕鬆地建立、部署和執行應用程式。
Docker101:把所有東西裝進容器中
那麼到底什麼是Docker呢?簡單來說,Docker就是一個輕量級Linux容器的實現,它允許虛擬化一個包含自己程式和網路空間的環境。Docker通過在作業系統層面上提供額外的抽象和虛擬自動化,把應用程式自動地部署在了這些軟體容器中。相比於建立一個完整的虛擬機器,這些容器只是位於同一個Linux例項之上,並能夠提供應用程式在其內部執行的小空間而已。
Docker容器最好的特性之一就在於它允許開發者打包一個應用程式需要的全部內容,包括庫和額外的依賴項,然後作為一個獨立的包進行釋出。通過這樣的方式打包應用程式,你就不再需要單獨執行一臺虛擬機器,也就意味著你可以在你的一臺Linux主機上部署足夠多你想釋出的應用了。同時由於不再需要為每一個應用程式增加一臺虛擬機器,你手上的主機也確確實實有了更多的可供使用的處理能力——可以用來安排更多的容器或者部署你想要執行的其它的應用。
簡化API開發
正如我們前文所述,Docker在一個應用程式裡就向API使用者提供了一個完整的開發生態系統,這使得在執行環境下的API系統得到了極大的簡化。每個Docker容器裡就只是包含了一個應用程式和其所有的依賴檔案,而與其它應用的容器在同一個主機系統上共享了同一個核心。
這意味著容器將可以自由地在任何系統中使用,它甚至捨棄了了原本虛擬機器作業系統裡通常需要的包含的東西——包括二進位制檔案和庫。如此,這樣的API系統就只需要包含它確實需要的內容了。
為什麼選擇Docker?因為好處多多
既然上面已經闡述了這麼多的背景知識,那麼到底是什麼讓Docker成為了一個真正好的選擇呢?主要原因如下:
它是開放的。因為Docker的開放標準帶來了能夠相容Linux和Microsoft作業系統環境的巨大優勢,它能夠支援絕大多數基礎設施的配置,同時它還允許了對程式碼庫的透明。
它是安全的。在傳統的模型中,破壞一個API應用可以輕易地導致整個系統的問題,而與傳統的相互依賴的模型不同,通過Docker容器的使用,我們能夠實現每一個正在處理的應用程式與其他的程式相互的隔離。如果你有一個部署在Docker容器中的web API,你還可以強制使用HTTPS作為附加的加密。而且,因為Docker是一個開放的系統,Docker的使用者們也會定期地檢查系統的安全漏洞。除此之外,你還可以通過訪問Docker security center來獲取更多Docker相關的工具和練習。
它縮短了開發時間。Docker容器的構建、啟動和映象儲存都是相當簡單的。它還可以方便地將一個已經存在的映象遷移到已經存在的Docker容器中。此外,因為開發的生態系統已經封裝完成,你可以投入更多的時間用於程式碼的編寫上,而不是應用程式所需環境的管理維護上。
它使用常用的檔案系統和映象。Docker部署的是常用的檔案系統和映象,並共享基本核心給API應用程式使用。所以,包含多依賴項的API應用程式在使用Docker後能減少冗餘的依賴將系統資源對系統的消耗而騰出更多的空間,同時這個API程式的容器也將被更容易的使用與理解。
嘗試一下
綜上好處,Docker是一個相當簡單易用的技術。Docker可以通過讀取Dockerfile裡的指令來自動地建立:一個包含了你能在命令列中呼叫來生成映象的所有指令的文字文件。使用docker build,你可以建立一個能夠通過執行若干命令列指令自動地建立新的映象。
通過指定特定位置PATH或者URL的Dockerfile檔案和環境,docker build命令就可以建立一個映象了。PATH是你本地檔案系統的目錄,URL是Git倉庫的位置。在當前的目錄下使用簡單的建立命令如下:
$ docker build . Sending build context to Docker daemon 6.51 MB
如果你想要在建立環境中使用一個檔案,Dockerfile這個指令就可以指向這個檔案,類似於COPY指令。如果你想要提高它的效能,那麼你可以通過增加一個.dockerignore檔案,來從你當前的目錄中排出一些檔案和目錄。
Dockerfile位於當前的根目錄下。你可以通過使用docker build的–f flag指向你的檔案系統裡任意位置的Dockerfile。
你還可以指明一個倉庫和表指明你想在哪裡儲存一個新的映象,通過提供一個建立的指令:
$ docker build -t shykes/myapp .
Docker後臺守護程式將會執行你的步驟,然後向你提交出一個新的映象和其ID,並自動地清理相關的環境。
更多關於Docker的深入討論和新的樣例指令,你可以訪問這個Docker線上教程。
譯文連結:http://www.codeceo.com/article/docker-api.html
英文原文:Docker: A Simple, Powerful Approach to APIs
翻譯作者:碼農網 – 任琦磊
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 簡潔Java之道Java
- PHP 簡潔之道PHP
- 構建高效的 API 規範API
- JavaScript 程式碼簡潔之道JavaScript
- JavaScript程式碼簡潔之道JavaScript
- Async:簡潔優雅的非同步之道非同步
- 重構 - 程式碼整潔之道
- JS程式碼簡潔之道--函式JS函式
- Clean Code PHP 程式碼簡潔之道PHP
- PHP程式碼規範簡潔之道PHP
- PHP 程式碼規範簡潔之道PHP
- 架構簡潔之道:從阿里開源應用架構 COLA 說起阿里應用架構
- 架構整潔之道-書中箴言架構箴言
- PHP程式碼簡潔之道——變數部分PHP變數
- PHP程式碼簡潔之道——函式部分PHP函式
- JAVA基礎之程式碼簡潔之道Java
- Java學習-18 簡潔高效的jQueryJavajQuery
- PHP 整潔之道PHP
- 兩種簡單的方法Docker構建LANMPDocker
- 架構整潔之道二(設計原則)架構
- 程式碼簡潔的十條建議
- JDK新特性——Stream程式碼簡潔之道的詳細用法JDK
- Keka Mac:高效簡潔的壓縮解壓工具Mac
- iA Writer for Mac:簡潔高效的MarkDown寫作利器Mac
- RxAndroid使用初探;簡潔、優雅、高效Android
- 程式碼整潔之道
- docker構建Docker
- [譯] Go 語言的整潔架構之道 —— 一個使用 gRPC 的 Go 專案整潔架構例子Go架構RPC
- 使用 Python 構建一個簡單的 RESTful APIPythonRESTAPI
- 構建高效系統:必備熱門API介面集合的推薦API
- JavaScript 程式碼整潔之道JavaScript
- Typescript 程式碼整潔之道TypeScript
- 聊聊程式碼整潔之道
- 程式碼簡潔之道:編寫乾淨的 React Components & JSXReactJS
- docker 構建自己的映象Docker
- 讀懂Netty的高效能架構之道Netty架構
- docker構建映象Docker
- 構建Docker Image的五個建議Docker