docker能用來干什么的

docker能用來做的事情有:1、可以快速搭建開發環境;2、可以將運行環境和配置放在代碼中并部署;3、可以使用docker-compose來模擬生產環境;4、進行自動測試;5、使用docker鏡像進行自我部署等等。

docker能用來干什么的

本文操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。

docker能用來干什么的?

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的?Linux或windows操作系統的機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

為什么要用Docker?

作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。

首先,Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。

容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。

具體說來,Docker 在如下幾個方面具有較大的優勢。

  • 更快速的交付和部署

對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。

開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之后,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創建容器,快速迭代應用程序,并讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。 Docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。

  • 更高效的虛擬化

Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。

  • 更輕松的遷移和擴展

Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個。

  • 更簡單的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化并且高效的管理。

Docker 的九個常用應用場景

1. 本地依賴(Local Dependency)

你需要在本地系統快速嘗試 Magento,或者為一個項目使用 mysql?還是希望嘗試大部分開源項目?那就使用 Docker 吧,它將幫你節省大量時間。Docker 能提升開發者的開發效率,讓我們快速搭建開發環境。

開發環境的機器通常內存比較小,此前使用虛擬的時候,經常需要為開發環境的機器加內存,而通過 Docker 可以輕易的讓幾十個服務在 Docker 中跑起來。

2. 搭建環境(Build Environment)

如果你希望構建源碼,但發現沒有準備好合適的環境。那么使用 Docker 是一個值得考慮的方案。畢竟如果使用傳統的方法一個一個地安裝軟件,一大軟件安裝下來確實十分費時間,使用容器技術省時省力,何樂而不為?

它能讓你將運行環境和配置放在代碼中然后部署,同一個 Docker 的配置可以在不同的環境中使用,這樣就降低了硬件要求和應用環境之間耦合度。這里有一個值得一看的例子: docker golang builder。

3. 微服務(Microservices)

你在使用微服務嗎?微服務架構 —— 將一個整體式的應用拆分成松耦合的單個服務。

那不妨考慮一下 Docker,你可以將每個服務打包為一個 docker 鏡像并使用 docker-compose 來模擬生產環境(checkout docker networks)。最開始實踐的時候可能會比較費時費力,但長遠地來看,最終將產生巨大的生產力。

4. 自動測試(Automated testing)

試想這樣一個問題,如何編寫自動化的集成測試用例,這些測試用例無需花很長時間來開始運行,使用者也可輕松管理。

這里不是指在 Docker 中運行測試用例,而是將測試用例與鏡像緊密運行在一起。當你針對一個 docker 鏡像編寫測試用例時會有一個很大的優勢。下面簡單介紹一下我的測試流程:運行兩個 docker 鏡像(app + db),在 MySQL 啟動時加載數據,并在 app docker 上使用 API。

5. 部署過程(Deployment process)

你可以使用 docker 鏡像進行自我部署。許多主流的主機提供商都支持托管 docker,如果你擁有一個具有 shell 訪問權限的專用節點/vm,那么事情將變得更容易。只需要設置好 docker,并在你想要的端口上運行你的鏡像即可。

6. 持續部署(Continuous Deployment)

都說 Docker 天生適合持續集成/持續部署,在部署中使用 Docker,持續部署將變得非常簡單,并會在進入新的鏡像后重新開始。

關于這個部分的自動化工作,現在已經有許多方案以供選擇,kubernetes 就是一個耳熟能詳的名字。Kubernetes是容器集群管理系統,是一個開源的平臺,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。

7. 多租戶環境(Multi-tenancy)

Docker 有意思的一個使用場景是在多租戶的應用中,它可以避免關鍵應用的重寫。如果你將應用程序服務公開給多個租戶(租戶指一組用戶,例如組織),使用單租戶方案設計的應用程序如果用上了 sub-domain + docker 可以快速獲得提供多租戶的服務。

關于這個場景的一個例子是為物聯網的應用開發一個快速、易用的多租戶環境。這種多租戶的基本代碼非常復雜,很難處理,重新規劃這樣一個應用不但消耗時間,也浪費金錢。使用 Docker,可以為每一個租戶的應用層的多個實例創建隔離的環境,這不僅簡單而且成本低廉,當然這一切得益于 Docker 環境的啟動速度和其高效的 diff 命令。

8. 來自一臺機器的多個 APP(Multiple apps from one machine)

這與上面提到的微服務有些聯系,但即使你沒有使用微服務,只是提供服務,Docker 仍可以很好地管理單個機器上的所有服務。你應該使用文件夾掛載來為每個基于數據的 docker 鏡像保留數據。

9. 擴容 QPS(Scaling QPS)

Docker 通過創建另一個容器來幫助你輕松地進行水平擴展。如果遇到巨大的高峰流量,Docker 可以幫助你解決問題 —— 只需添加更多的機器并增加負載均衡器背后運行的容器數量。

還有文章沒提到的關于 Docker 的應用場景?歡迎你和大家一起分享~

本文最初發表在oschina,文章內容屬作者個人觀點,不代表本站立場。

推薦學習:《docker視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享