[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 可以確保每一個開發者和每一個伺服器(包含,上線、開發和測試)時的開發環境相同。任何人都可以在短時間內設置好專案,不需要再去花許多時間搞設定,安裝套件等等。
簡單來說,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。
常見問題
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
即可解決。
參考
- ⭐ Docker For Frontend Developers By Akanksha Sharma @ dev.io
- Sweet Shell: With True Color, Oh-My-Zsh, SpaceVim, Gruvbox, and Demo Mode @ BretFisher Shell
- Docker Compose Documentation @ Docker
- Docker Command Line Completion @ Docker
- Docker Mastery: The Complete Toolset From a Docker Captain @ Udemy