Docker使用知識與方法 閱讀筆記(一)

何謂Docker

  • Docker是「可隔離資料、軟體程式(服務)」的工具
    Docker把服務器上的空間切割出各個容器(Container),讓服務能享有獨立的運行環境,比如常見的Apache(網路伺服器軟體)、MySQL(資料庫軟體)。
  • Docker透過映像檔(Image)來建立容器
    可以把映像檔理解成軟體的安裝片,Docker Engine會安裝這些儲存於映像檔的配置後,將軟體安裝於容器內。
  • Docker的使用目的
    很重要的理由是,避免軟體間倚賴資源衝突。書中舉例是,當A系統和B系統都倚賴同一個函示庫,但有可能A或B因為後續更新,B倚賴的版本升級,卻影響到A系統的運作。

伺服器與Docker

  • 伺服器(Server)是指提供(Service)的裝置
    依功能區分,可以區分出1.功能伺服器(網路服務器、郵件服務器)和2.實體伺服器(一台存在於實體的主機),且實體伺服器上可以同時兼職多個功能伺服器,這取決於實體伺服器上安裝的軟體。 知名的網路伺服器軟體,如Apache、Nginx、IIS。代表性的資料庫伺服器軟體,如MySQL、PostgreSQL、SQL Server。
  • 以容器安全地共存多個功能伺服器
    書中舉例是提到,可以讓一台主機上運行多個Apache服務,因此不需要因為開發階段再去準備另一台Server來啟Apache服務。
  • 容器便於搬移
    只要有安裝Docker軟體的實體伺服器,都可以無視實體環境和服務器的差異,來將服務搬移後啟動。

Docker的運作機制

  • 每個容器內有類Linux(作業系統)
    類Linux是指只有能傳遞服務指令的殼(Shell),容器只要搭載這種佔據最少資源的類Linux方式,讓實際執行的指令還是交由容器外的Linux核心(kernel)處理。
  • 原則上在Linux上才能讓Docker運行
    所以在Mac或Window作業系統上要運行Docker,會以某種形式準備Linux環境給Docker運行。

映像檔(image)與容器(continer)

  • 兩者關係
    映像檔可以建立容器,而容器也可以建立成映像檔。書中把映像檔比喻為模型,模型可以重複刻出同樣的容器,而建立出來的容器也可以改造後,在建立成為映像檔。
  • 各種容器的映像檔在Docker Hubopen in new window
    可以從hub下載各種服務的映像檔,便可以快速在伺服器上安裝好服務。
  • 容器是用完即丟棄
    容器的生命週期,包含建立、啟動、停用和捨棄。當容器被捨棄時,容器內的資料便會消失,因此資料儲存通常是連接容器外實體主機的硬碟進行。