# 簡介
# 什麼是 Docker?
Docker 是一個開源軟體,出現於 2013 年初,最初是 Dotcloud 公司內部的 Side-Project。
它基於 Google 公司推出的 Go 語言實作。(Dotcloud 公司後來改名為 Docker)
# 為什麼要使用 Docker?
- 更有效率的利用資源
- 統一環境
- 對於 DevOps 的好處
- 使開發高效且可以預測
- 消除了重複的、平凡的配置任務,在整個開發生命週期中用於快速、簡單和可移植的應用程序開發。
# 概念
# Docker 三元素
# Image
- 映像檔為一個唯獨的模板。
- 內可包含完整的 ubuntu 作業系統環境。
- 映像檔可用來快速生產 Docker 容器,並可重複產生。
- 映像檔可以透過 (撰寫由命令行構成的) Dockerfile 建立,或是開放公開下載的地方取得。
舉例來說,如果我今天想要一個 node.js 的執行環境跑我寫好的程式,我可以直接到上 Docker Hub 找到相對應的 node.js 映像檔 ,而不需要自己想辦法打包一個執行環境。
# Container
- 容器是由映像檔建立出來的實例。
- Docker 即是利用容器來執行關鍵技術。
- 容器可以被啟動、開始、停止、刪除。
- 且容器與容器之間是相互隔離、保證安全的。
可以把容器看做是一個執行的應用程式加上執行它的簡易版 Linux 環境(包括 root 使用者權限、程式空間、使用者空間和網路空間等)
# Repository
- 倉庫是集中存放映像檔檔案的場所,每個倉庫中又包含了多個映像檔。
- 每個映像檔有不同的標籤(tag)。
- 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式
- 而最大的公開倉庫為 Docker Hub,裡面存放了大量的現成、實用映像檔供使用者下載。
而 Docker 倉庫註冊伺服器的概念就跟 Github 類似,你可以在上面建立多個倉庫,然後透過 push、pull 的方式上傳、存取。