docker學習之理論學習

docker的介紹

簡介

  • Docker是一個開源的應用容器引擎,基於Go語言,並遵從Apache協議開源。
  • Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的Linux機器上,也可以實現虛擬化。
  • 容器是完全使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。

應用場景

  • web應用的自動化打包和發佈
  • 自動化測試和持續集成、發佈
  • 在服務型環境中部署和調整數據庫或其他後臺應用。
  • 從頭編譯或者擴展現有的平臺環境

docker的優點

  • 簡化程序:Docker讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的Linux機器上,便可以實現虛擬化,Docker的最大優勢,過去需要用數天乃至數週的任務,在Docker容器的處理下,只需要數秒就能完成。
  • 避免選擇恐懼症:如果你有選擇恐懼症,Docker幫你打包你的糾結。比如Docker鏡像;Docker鏡像中包含了運行環境和配置,所以Docker可以簡化部署多種應用實例工作。比如web應用、後臺應用、數據庫應用、大數據應用、比如hadoop集羣、消息隊列等等都可以打包成一個鏡像部署。
  • 節省開支:一方面,雲計算時代到來,使開發者不必爲了追求效果而配置高額的硬件,Docker改變了高性能必然高架格的思維定式。Docker與雲的結合,讓雲空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。

docker系統架構

  • Docker使用客戶端-服務端(cs)架構模式,使用遠程API來管理和創建Docker容器,Docker容器通過Docker鏡像來創建。
  • 容器與鏡像的關係類似於面向對象編程中的對象與類
  • 相關概念
標題 說明
鏡像(images) Docker鏡像是用於創建Docker容器的模板
容器(Container) 容器是獨立運行的一個或一組應用
客戶端(Client) Docker客戶端通過命令行或者其他工具使用Docker API與Docker守護進程通信
主機(Host) 一個物理或者虛擬的機器用於執行Docker守護進程和容器
倉庫(Regisrty) Docker倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。DockerHub提供了龐大的鏡像集合供使用。
Docker Machine Docker Machine 是一個簡化Docker安裝的命令工具,通過一個簡單的命令行即可在響應的平臺上安裝Docker

相關概念

數據卷(數據持久化)

  • 數據卷是一個可以提供一個或多個容器使用的特殊目錄。
  • 可以達到以下目的:
    • 繞過“拷貝寫”系統,以達到本地磁盤IO的性能,(比如運行一個容器,在容器中對數據卷修改內容,會直接改變宿主機上的數據卷中的內容,所以是本地磁盤IO性能,而不是先在容器中寫一份,最後還要將容器中的修改的內容拷貝出來進行同步)
    • 繞過“拷貝寫”系統,有些文件不需要在docker commit 打包鏡像文件,
    • 在多個容器間共享目錄
    • 在宿主和容器間共享一個文件。
  • 數據卷可以提供很多有用的特性:
    • 數據卷可以在容器之間共享和重用,容器間傳遞數據將變得高效與方便。
    • 對數據卷內容數據的修改會立馬生效,無論是容器內操作還是本地操作
    • 對數據卷的更新不會影響鏡像,解耦開應用和數據
    • 卷會一直存在,知道沒有容器使用,可以安全地卸載它。

端口映射與容器互聯

端口映射實現容器訪問

當容器中運行一些網絡應用,要讓外部訪問這些應用時,可以通過-p參數來指定端口映射。

互聯機制實現便捷互訪

容器的互聯是一種讓多個容器中的應用進行快速交互的方式。它會在源和接收容器之間創建連接關係,接收容器可以通過容器名快速訪問到容器,而不用指定具體的IP地址。

–name

  1. 容器互聯

    使用 --link 參數可以讓容器之間安全地進行交互

    docker run -d --name db mysql

    docker run -d -p --name web --link db:db webapp

    此時,db容器和web容器建立互聯關係。

    –link參數的格式爲–link name:alias,其中name是要鏈接的容器的名稱,alias是別名

Docker相當於在兩個互聯網的容器之間創建了一個虛擬機通道,而且不用映射他們的端口到宿主主機上。

Docker-compose

  • Docker Componse是一種用於通過使用單個命令創建和啓動Docker應用程序的工具。我們可以使用它來配置應用程序的服務。
  • 它是開發,測試和升級環境的利器。
  • 它提供以下命令來管理應用程序的整個生命週期:
    • 啓動,停止和重建服務
    • 查看運行服務的狀態
    • 流式運行服務的日誌輸出
    • 在服務上運行一次性命令
  • 要實現docker compose,需要包括以下步驟
    • 將應用程序環境變量放在Docker文件中以公開訪問。
    • 在docker-compose.yml 文件中提供配置服務名稱,以便他們可以在隔離的環境中一起運行。
    • 運行docker-compose ,compose將啓動並運行整個應用程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章