Docker - 介紹及安裝教學

今天這篇文章介紹 Docker 與 VM 的差異性及佈署和開發的好處,最後教學如何在 Windows 及 Ubuntu 的環境下安裝 Docker。

什麼是 Docker?

以不太準確的講法是:輕量化的虛擬機。

如果有玩過虛擬機,就知道虛擬機實際上是模擬ㄧ整個主機環境,有各自的 OS 環境,因此除了佔用的空間大,通常要以 GB 起跳,啟動速度也較緩慢。

而 Docker 是建立 Container,Container 是應用程式的抽象,多個 Container 可以在同一台主機上運行,並且跟其他容器共享 OS 核心。每個 Container 占用的空間少於 VM,通常才幾十 MB。

所以其實 VM 跟 Docker 其底層一開始設計就不一樣了!

我們看 Docker 官網提供的 VM 及 Docker 結構圖會更清楚:

  • VM

  • Docker

為什麼要使用 Docker?

舉個簡單例子,如果要開發一個網站,並且將這個網站架設一台主機上,首先可能要先各自安裝程式語言環境 (Java、Golang、Python)、資料庫環境 (PostgreSQL、MySQL)、資料庫管理系統 (pgAdmin、WorkBench)、網頁伺服器 (nginx、apache) 等等。這些安裝完也都測試過版本的問題,才可以進行架設網站的動作。

試想當網站不斷擴充,有可能會有伺服器搬遷的情況,這時候重新搬遷到新的伺服器,又要做同樣的設定,更提高出錯的可能。

這也就是為什麼 Docker 的構想是推廣 Build, Ship and Run Any App, Anywhere,簡單來說就是簡單化佈署的難度,並且只要第一次設定檔寫好,之後用同樣的設定檔就可以了,不需要再多做其他煩人的設定。

除了最後上線佈署,對於開發過程也提供了以下好處:

  • 開發人員可以使用映像檔 (image),快速構建一套標準的開發環境。在開發完成後,寫好設定檔,就可以讓別人來快速佈署來測試。

    例如 Frontend 跟 Backend 要合作的時候,當 Backend 寫好了 API,總不可能叫 Frontend 在自己開發主機上裝好 Backend 所需要的環境,最後還要自己佈署上去才能測試。因此 Backend 只要將 Dockerfile 寫好,也就是佈署設定檔寫好,而 Frontend 主機上只要有安裝 Docker 就可以無痛佈署並且測試,非常便利。

  • 事實上,對於自己開發上也有一定的好處,如果電腦是 Windows,可是之後佈署環境在 Linux,以前的做法還要在自己電腦上裝好虛擬機然後再去下載容量大的虛擬機映像檔,才可以測試佈署環境。今天只要在自己電腦上裝好 Docker,而且裝 Docker 的過程十分快速,然後寫好設定檔,就可以一鍵佈署,非常省時省力。

  • Docker 使用類似 Git 設計的操作方式,方便開發者進行操作。

  • Docker 佈署、更新、刪除非常快速及方便,比起虛擬機操作真的差太多了。

另外還有一個例子,如果你的主機在寫程式時不想裝程式語言環境或其他依賴環境,也許容量不夠等問題,就可以透過 Docker 裝程式語言環境,讓主機存取 Docker 上的程式語言環境來進行寫程式,這樣是可以實現出來的。

安裝 Docker

Ubuntu 安裝

Docker 安裝是需要 Linux 環境的,因此在 Ubuntu 環境下安裝非常簡單:

  1. 安裝 docker

    1
    sudo apt-get install docker.io
  2. 檢查 docker 服務有無正常啟動

    1
    service docker status

    如果沒意外的話會在前面幾行看到:

    Active:active(running)

  3. 將自己使用者帳號加入 docker 群組

    1
    sudo usermod -aG docker <username>

    這個動作主要是因為權限的關係,如果沒有加這個,會導致沒有權限使用 Docker。

  4. 登出後再重新登入

    1
    docker version

    會出現 Client、Server 的訊息,但如果最下面出現了:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

    這就是可能因為沒做第三個步驟,通常是權限的問題。

沒錯,就是這麼簡單就安裝好了~

Windows10 安裝

首先 Windows 安裝有兩種方式:

  • Docker Desktop for Windows
  • Docker Toolbox on Windows

個人建議裝第一種,但是要前提,首先你的 Windows10 要有 Hyper-V 功能,如果不理解什麼是 Hyper-V,請點擊這裡

或是如果你的 Windows10 是專業版的話那就ㄧ定有 Hyper-V 的功能,就可以安裝 Docker Desktop。

這邊安裝只會介紹第一種,個人不建議使用第二種方式,因為它還會幫你裝 Virtual Box,沒有錯,前面說過 Docker 只原生支持 Linux,因此 Windows 環境要用,等於是在 Windows 上裝了一個 Linux 虛擬機,而在這個虛擬機上面再裝 Docker。

但其實第一種安裝方式也是透過ㄧ個 Linux 虛擬機來裝 Docker,只是這個虛擬機是用 Windows 是用原生的 Hyper-V 服務,管理方便,功能也很好用,可參考剛剛那篇文章。

  1. 首先要先到 Docker Hub 進行註冊,這樣才能下載 Docker Desktop for Windows

    網址:https://hub.docker.com/

    Docker Hub 註冊是免費的,而且之後開發程式後寫好的 Docker 映像檔可以放置上 Docker Hub,類似 GitHub 的概念,相對的你也可以用別人公開在上面的映像檔。

  2. 登入後,就會在右邊看到下載連結:

  3. 下載完,點擊就是圖形化安裝方式

  4. 如果你安裝完成後,並沒有開啟 Hyper-V 的服務,那麼它會通知你並且自動幫你開啟,開啟完後就會自動重開機就搞定啦~

  5. 看有沒有安裝成功

    1
    docker --version

    會秀出安裝的版本:

    1
    Docker version 19.03.1

這樣就安裝完成了!

哈囉 Docker!

運行官方的 Hello World 映像檔:

1
docker run hello-world

會出現以下訊息:

1
2
3
4
5
6
7
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete Digest: sha256:d1668a9a1f5b42ed3f46b70b9cb7c88fd8bdc8a2d73509bb0041cf436018fbf5
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

這樣就是成功運行 Container,歡迎踏入 Docker 的世界!

最後最後!請聽我一言!

如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!