[微服務] Docker基礎(1) - 什麼是Docker?

前言

此篇文章,會著重於

  • Why - 為什麼要使用Docker
  • What - 甚麼是Docker

Why? 為什麼要用Docker

Docker是一個輕量級的虛擬化技術,它主要解決的問題如下

每當我們要安裝一個應用的時候,都會面臨如上圖的煩惱循環,只要用了Docker,那我們就不用再苦惱那些煩人的環境變數和與官方網站安裝教學不一致的作業環境造成的問題。

Docker的出現讓我們,可以簡單的透過幾個指令與下載Docker的Container就可以解決。

What? 甚麼是Docker?

Docker的生態圈如下圖所示

  • Docker Client
    • 使用者可以透過Docker Client做Command Line的操控
  • Docker Server
    • Docker透過Docker Server去對Docker Hub上傳或下載Image
  • Docker Machine
    • 日後文章介紹
  • Docker Images
    • Docker的精隨,Docker會根據Image的設定啟動Container
  • Docker Hub
    • 如同Git Hub般,許多人會將自己的Image開源在此網站之上,通常我們的Image是直接從此下載
  • Docker Compose
    • 如果要同使啟用多個Docker一行一行的指令輸入太慢了,可以透過Docker Compose一鍵建立我們的Docker生態

而Docker中的重點就是Docker Container與Docker Images

Docker Image

  • Docker Image 只是一個檔案,其中包含了他要安裝甚麼服務與設定,還有啟動時的Command line指令
  • Docker中的Container會根據Image的內容而建立,每個Image可以創立多個Container

Docker Container

因為篇幅較大所以分到下一篇文章撰寫

使用概觀

所以我們正常使用時,會對Docker Clinet輸入我們的Docker指令,而Docker Server則負責處理這些指令的功能。

快速使用

  • 註冊一個自己的Docker Hub帳號
  • 下載Docker在自己的電腦裡
  • 登入Docker
  • 確定自己的Docker有沒有安裝
    • docker --version

如果開始使用後

整體的工作流程會如下圖,當我們使用了Docker run

  • Docker Client會接收指令
  • Docker Server會執行指令的邏輯,判斷是否有此image
    • 有的話直接建立
    • 沒有的話從Docker hub下載

下一篇

[微服務] Docker基礎(2) - 甚麼是Docker容器

留言

這個網誌中的熱門文章

Java Lambda Map篇

(InterviewBit) System Design - Design Cache System

設計模式 - 享元模式 (Structural Patterns - Flyweight Design Pattern)