之前接觸過一點Docker,但是並不是很瞭解,所以筆者今天寫一寫關於Docker的一寫博客,目的有兩個:1、通過博客系統學習一下Docker;2、通過博客和各位博友共同學習!
首先,從百度百科查詢了一下Docker的相關接受:Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的Linux機器或Windows 機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協議開源。
一個完整的Docker有以下幾個部分組成:
- DockerClient客戶端
- Docker Daemon守護進程
- Docker Image鏡像
- DockerContainer容器
Docker官網:https://www.docker.com/
Github Docker 源碼:https://github.com/docker/docker-ce
一、Docker架構
Docker架構包含三個基本概念:
- 鏡像(Image)
相當於是一個root文件系統。鏡像由多個層組成,每層疊加之後,從外部看來就如一個獨立的對象。鏡像內部是一個精簡的操作系統(OS),同時還包含應用運行所必須的文件和依賴包。Docker鏡像是(Image)就是一個只讀的模板,它可以是一個運行軟件(tomcat/mysql),也可以是一個系統(centos/ubuntu)
鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啓動、停止、刪除、暫停等操作。 - 倉庫(Repository)
倉庫可以是看作一個代碼控制中心,用來保存鏡像。
類似GitHub存放項目代碼一樣,只不過Docker Hub是由來存鏡像(Image)的。
倉庫(Repository)和倉庫註冊服務器(Registry)是有區別的。倉庫註冊服務器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像都有不同的標籤(tag,類似版本號)。
Docker | 面向對象 |
---|---|
容器 | 對象 |
鏡像 | 類 |
Docker基本概念說明
念 | 說明 |
---|---|
Docker 鏡像(Images) |
Docker 鏡像是用於創建 Docker 容器的模板,比如 Ubuntu 系統。 |
Docker 容器(Container) |
容器是獨立運行的一個或一組應用,是鏡像運行時的實體。 |
Docker 客戶端(Client) |
Docker 客戶端通過命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 與 Docker 的守護進程通信。 |
Docker 主機(Host) |
一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。 |
Docker Registry |
Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。 Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。 一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標籤(Tag);每個標籤對應一個鏡像。 通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標籤就常用於對應該軟件的各個版本。我們可以通過 <倉庫名>:<標籤> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標籤,將以 latest 作爲默認標籤。 |
Docker Machine |
Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
二、 Docker應用場景
- Web應用的自動化打包、發佈
- 自動化測試、持續集成和發佈
- 在服務型環境中部署和調整數據庫或其他後臺應用
- 從頭編譯胡或擴展現有的OpenShit或Cloud Foundry平臺來搭建自己的PaaS環境
三、Docker的優點
Docker 是一個用於開發,交付和運行應用程序的開放平臺。Docker 使您能夠將應用程序與基礎架構分開,從而可以快速交付軟件。藉助 Docker,您可以與管理應用程序相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。
1、快速,一致地交付您的應用程序
Docker 允許開發人員使用您提供的應用程序或服務的本地容器在標準化環境中工作,從而簡化了開發的生命週期。
容器非常適合持續集成和持續交付(CI / CD)工作流程,請考慮以下示例方案:
- 您的開發人員在本地編寫代碼,並使用 Docker 容器與同事共享他們的工作。
- 他們使用 Docker 將其應用程序推送到測試環境中,並執行自動或手動測試。
- 當開發人員發現錯誤時,他們可以在開發環境中對其進行修復,然後將其重新部署到測試環境中,以進行測試和驗證。
- 測試完成後,將修補程序推送給生產環境,就像將更新的鏡像推送到生產環境一樣簡單。
2、響應式部署和擴展
Docker 是基於容器的平臺,允許高度可移植的工作負載。Docker 容器可以在開發人員的本機上,數據中心的物理或虛擬機上,雲服務上或混合環境中運行。
Docker 的可移植性和輕量級的特性,還可以使您輕鬆地完成動態管理的工作負擔,並根據業務需求指示,實時擴展或拆除應用程序和服務。
3、在同一硬件上運行更多工作負載
Docker 輕巧快速。它爲基於虛擬機管理程序的虛擬機提供了可行、經濟、高效的替代方案,因此您可以利用更多的計算能力來實現業務目標。Docker 非常適合於高密度環境以及中小型部署,而您可以用更少的資源做更多的事情。
以上僅是對Docker基本情況的介紹,有的其實筆者也是一知半解,在以後的學習中過程中慢慢積累....