跳至主要内容

[Docker] Getting Start

本篇文章非原創文章,多數內容翻譯自 Docker For Frontend Developers 其他請見下方參考連結。

  • 不要使用 homebrew 安裝 docker,因為它只會安裝 docker 的 CLI 而沒有全部的功能。
  • 從官網下載 Docker 並安裝。
  • 下載 Docker Command Line Completion - zsh

為什麼要使用 Docker

過去當要架設應用程式時,在還不清楚應用程式的效能需求時,就需要先去買一台主機,但這常常需要用推估的,而且可能會浪費了在一台主機的資源和經費。

到了虛擬機器(Virtual machines, VM),它讓我們可以在單一的伺服器上運作多個不同的 App,但它還是有缺點,每一個 VM 都需要完整的 O S 才能執行,而每一個 OS 都需要 CPU, RAM 等才能運作,這些都需要補丁和授權,最終亦導致成本的增加。

為了解決 VM 到不足 Google 開始使用 container model。它可以在相同的主機上運行多的 container,如此釋放更多的 CPU 和 RAM 讓其他需要的地方使用。

對於開發者來說,透過 Docker 可以確保每一個開發者和每一個伺服器(包含,上線、開發和測試)時的開發環境相同。任何人都可以在短時間內設置好專案,不需要再去花許多時間搞設定,安裝套件等等。

VM 和 Docker 的差別

簡單來說,docker 是一個平台(platform),透過它的 container 可以讓你開發、部署和啟動應用程式。它可以讓你:

  • 更快的上線,減少浪費許多時間在環境設定上,並且可以在本機直接啟動線上版的程式。

  • 減少不同環境問題所導致的差異,將所有和應用程式有關的套件、設定和相依的套件都放在獨立的 container 內。

Container 和 Image 的差別

  • Docker Image:它是一個可執行的檔案,包含了精簡版的作業系統(cutdown OS)、函式庫、設定檔等要運行一個應用程式所需的所有東西。透過 docker file 可以建立 docker image。
  • Docker Container:是一個透過 docker image 運行起來的實例(instance),同一個 docker image 可以運行多個 container。
  • image registries:github 之於原始碼,就類似 registry 之於 container images。

Imgur

常見問題

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running? @ Github Issue

只需在執行 docker 指令前加上 sudo 即可解決。

參考