docker學習<一>

  • docker簡介:

    • docker 是一個基於LXC技術構建的容器引擎,使用Go語言開發,並遵循Apache2.0 協議開源。
    • docker 支持打包應用及其依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的Linux機器上,重新定義了應用開發,測試,部署上線的過程,核心理念就是 Build once, Run anywhere。
  • docker的優勢:

    • 更高效的利用系統資源:docker容器具有vm(虛擬機) 的一些優勢,如具有良好隔離,等,但與vm 相比, 容器共享宿主機的操作系統內核, 不需要進行硬件虛擬化,不需要運行完整操作系統等開銷,因而無論是應用執行速度,內存損耗或文件存儲速度,都要比傳統vm更高效;
    • 一致的運行環境:docker的鏡像提供了除內核外完整的運行環境,確保了應用運行的環境一致性。
    • 持續交付和部署: 對於開發和運維(DevOps)人員來說,最希望的就是一次創建或配置,可以再任意地方運行。 使用docker 可以通過定製應用鏡像來實現持續集成、持續交付、部署。開發人員通過Dockerfile 構建鏡像,並結合 持續集成系統測試,而運維人員則可以直接在生產環節中快速部署該鏡像,甚至結合持續集成系統進行自動部署。
    • 衆多的官方鏡像:基本上在docker的官方鏡像倉庫中,可以找到所有主流框架的鏡像.
  • docker 應用場景

    • Web 應用的自動化打包和發佈。
    • 自動化測試和持續集成、部署。
    • 在服務型環境中部署和調整數據庫或其他的後臺應用。
    • 從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。
  • Docker中的幾個基本概念。

    • 鏡像( 類似於面向對像中類)

    Docker的鏡像概念類似於虛擬機裏的鏡像,是一個只讀的模板,一個獨立的文件系統,包括運行容器所需的數據,可以用來創建新的容器。

    鏡像可以基於Dockerfile構建,Dockerfile是一個描述文件,裏面包含若干條命令,每條命令都會對基礎文件系統創建新的層次結構。

    用戶可以通過編寫Dockerfile創建新的鏡像,也可以直接從類似github的Docker Hub上下載鏡像使用。

  • 容器(類似於面向對象的實例對象)

    Docker容器是由Docker鏡像創建的運行實例。Docker容器類似虛擬機,可以支持的操作包括啓動,停止,刪除等。每個容器間是相互隔離的,但隔離的效果比不上虛擬機。容器中會運行特定的應用,包含特定應用的代碼及所需的依賴文件。

    在Docker容器中,每個容器之間的隔離使用Linux的 CGroups 和 Namespaces技術實現的。其中 CGroups 對CPU,內存,磁盤等資源的訪問限制,Namespaces 提供了環境的隔離。

  • 倉庫

  • 如果你使用過 git 和 github 就很容易理解Docker的倉庫概念。Docker倉庫相當於一個 github 上的代碼庫。

    Docker 倉庫是用來包含鏡像的位置,Docker提供一個註冊服務器(Registry)來保存多個倉庫,每個倉庫又可以包含多個具備不同tag的鏡像。Docker運行中使用的默認倉庫是 Docker Hub 公共倉庫。

    倉庫支持的操作類似 git,創建了新的鏡像後,我們可以 push 提交到倉庫,也可以從指定倉庫 pull 拉取鏡像到本地。


    • 創建鏡像的方式

    當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。
    從已經創建的容器中更新鏡像,並且提交這個鏡像
    使用 Dockerfile 指令來創建一個新的鏡像

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