docker介紹

  • docker介紹

docker 介紹

  • docker 是一個應用容器引擎, 可以打包應用及其依賴包到一個可移植的容器中, 然後發佈到任何流行的 Linux 或 Windows 機器上, 也可以實現虛擬化.
  • 為什麼會有 docker, 因為開發和運維經常遇到一類問題, 那就是應用在開發人員的環境上運行沒有任何問題, 但在實際生產環境中卻 bug 百出.
    • 程序的運行從硬體架構到操作系統, 再到應用程序, 這些都是不同的層次, 但是開發人員往往只關注應用程序的開發, 而忽略了其他層次的問題.
    • docker 的出現就是為了解決這個問題, 它將應用程序及其依賴, 打包在一個容器中, 這樣就不用擔心環境的問題了.
  • 同步開發和生產環境, 使開發人員可以在本地開發, 測試, 部署應用程序, 而不用擔心環境的問題. 顯著提升了開發和運維的效率, 代價是一點點資源的浪費.

我極力建議所有開發者都學會使用容器進行開發和部署, 它以相對很低的代價, 為你的應用程序提供一個穩定的運行環境, 從而提高開發和運維的效率.

使用一些通俗的語言來描述使用 docker 的一種工作流:

  1. 從零創建一個開發的環境, 包含了操作系統, 應用程序, 依賴包, 配置文件等等.
    • 環境可以在任何地方運行, 也可以在任何地方創建.
    • 環境對源碼編譯的結果穩定且可預測, 行為完全一致.
    • 環境中程序的運行不會產生任何歧義.
    • 最好是可以使用聲明式的方式來創建環境(docker-compose), 進一步減少環境的隱藏差異, 環境的一切都已在聲明裡展示.
  2. 創建一個 commit, 創建鏡像, 這相當於一個快照, 保存當前的環境, 以便以後使用.
  3. 分享鏡像給其它開發和運維, 大家基於相同語境同步展開工作.
  4. 隨著業務的發展需求, 修改鏡像, 重新創建 commit, 重新創建鏡像, 重新分發.

docker 的基本架構