Skip to content

Docker 基礎介紹

Docker 的發展歷程

Docker 最初是由 dotCloud(一家平台即服務公司,後來更名為 Docker, Inc.)的創始人 Solomon Hykes 於 2013 年推出。Docker 最初是作為 dotCloud 內部項目開發的,但由於其創新性和實用性,它迅速吸引了廣泛的關注和社群支持。

Docker 一經推出,就以其簡化和加速開發到部署流程的能力,重塑了軟體容器化和微服務架構的景觀。隨著時間的推移,Docker 不斷進化,增加了新的功能和改進,如 Docker Swarm(集群管理)和 Docker Compose(多容器應用定義),進一步鞏固了其在行業中的領導地位。

Docker 的核心概念

  1. 容器(Container):容器是 Docker 的核心概念。它是一種輕量級、可移植的、自包含的軟體打包方式,允許用戶將應用及其所有依賴、配置一起打包,確保在不同環境中一致運行。

  2. 映像檔(Image):容器是從映像檔創建的。映像檔是一個輕量級、只讀的模板,包含了運行應用所需的代碼、庫、環境變量和配置檔案。

  3. 倉庫(Registry):Docker 倉庫是用來存放映像檔的地方。Docker Hub 是最著名的公共倉庫,但用戶也可以建立私有倉庫來存儲和管理映像檔。

  4. Dockerfile:Dockerfile 是一個文本檔案,包含了創建映像檔所需的所有指令。這使得映像檔的創建過程變得可重現且自動化。

  5. 容器網絡(Networking):Docker 允許通過設定網絡來控制容器之間以及容器與外部世界之間的通訊。

  6. 數據卷(Volumes):Docker 使用數據卷來持久化和共享容器的數據。這使得即使容器被刪除,數據仍然可以保留和重用。

Docker Hub

Docker Hub 的核心功能

  1. 映像檔存儲與分發:用戶可以將自己創建的容器映像檔推送(Push)到 Docker Hub,也可以從 Docker Hub 拉取(Pull)別人分享的映像檔。

  2. 公共與私有倉庫:提供公共倉庫供所有用戶使用,並允許創建私有倉庫來限制訪問權限。

  3. 自動建構(Automated Builds):連接到 GitHub 或 Bitbucket,當原始碼發生變更時自動建構並更新映像檔。

  4. 官方映像檔(Official Images):由 Docker 官方維護的映像檔,保證安全和質量。

  5. 社群與協作:用戶可以評論、評分映像檔,增進社群間的互動和協作。

Docker Hub 的重要性

Docker Hub 在容器化技術的生態系統中扮演著關鍵角色。它不僅使得映像檔的分享和部署變得簡單,還促進了開源社群和私有專案之間的協作。透過 Docker Hub,開發者可以快速找到所需的映像檔,從而加速軟體開發和部署流程。此外,它還支持自動化流程,提高了開發效率和應用的可靠性。

Docker Hub 與 Docker 的關聯

Docker Hub 是 Docker 技術生態中的重要組成部分,緊密結合 Docker 的核心概念和功能。它提供的映像檔服務完美契合 Docker 的容器化理念,使得應用的打包、傳輸和部署更加高效和靈活。對於使用 Docker 進行軟體開發和運維的團隊來說,Docker Hub 是不可或缺的工具之一。

安裝 Docker

在不同的作業系統中安裝 Docker 會有所不同。以下是 Windows、macOS 和 Linux 上安裝 Docker 的基本步驟。

Windows 上安裝 Docker

在 Windows 上,Docker 提供了 Docker Desktop,適用於 Windows 10 和更新版本的系統。

  1. 下載 Docker Desktop:

    • 訪問 Docker 官方網站並下載 Docker Desktop 的安裝檔。
  2. 安裝 Docker Desktop:

    • 運行下載的安裝檔。
    • 跟隨安裝指引完成安裝。
  3. 啟動 Docker Desktop:

    • 安裝完成後,啟動 Docker Desktop。
    • 這可能需要開啟系統的虛擬化功能。
  4. 驗證安裝:

    • 打開命令提示字元或 PowerShell,輸入 docker --version 來檢查 Docker 是否安裝成功。

macOS 上安裝 Docker

在 macOS 上,同樣使用 Docker Desktop 進行安裝。

  1. 下載 Docker Desktop:

    • 訪問 Docker 官方網站並下載適用於 macOS 的 Docker Desktop 安裝檔。
  2. 安裝 Docker Desktop:

    • 打開下載的 .dmg 檔案。
    • 將 Docker 拖入「應用程式」資料夾。
  3. 啟動 Docker Desktop:

    • 在「應用程式」資料夾中找到 Docker 並啟動它。
  4. 驗證安裝:

    • 打開終端機(Terminal),輸入 docker --version 來確認 Docker 是否安裝成功。

Linux 上安裝 Docker

在 Linux 系統中,Docker 的安裝依賴於具體的發行版。以下以 Ubuntu 為例介紹安裝步驟:

  1. 更新軟體套件列表:

    sudo apt-get update
    

  2. 安裝 Docker 的必要套件:

    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    

  3. 添加 Docker 的官方 GPG 鑰匙:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

  4. 設置 Docker 穩定版儲存庫:

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    

  5. 再次更新軟體套件列表(針對 Docker 儲存庫):

    sudo apt-get update
    

  6. 安裝 Docker CE(社區版):

    sudo apt-get install docker-ce
    

  7. 驗證 Docker 是否安裝成功:

    sudo docker --version
    

建立第一個 Docker 容器

以下是利用 Nginx 的 Image 為例,來體驗 Docker 的操作。

步驟 1: 安裝 Docker

首先,確保您的系統已安裝 Docker。可以通過 Docker 官方網站下載並安裝適合您操作系統的 Docker 版本。

步驟 2: 拉取 Nginx 映像檔

使用以下指令從 Docker Hub 拉取 Nginx 映像檔(Image):

docker pull nginx

步驟 3: 建立 Nginx 容器

以下指令會建立一個新的 Nginx 容器,並將容器的 80 端口映射到主機的 8080 端口:

docker run --name my-nginx -d -p 8080:80 nginx

這裡 -d 代表在背景執行容器,--name 用於指定容器名稱。

步驟 4: 查看 Nginx 預設網頁

打開瀏覽器並訪問 http://localhost:8080,您應該能看到 Nginx 的預設歡迎頁面。

管理容器

以下是一些基本的 Docker 容器管理指令:

  • 停止容器
docker stop my-nginx
  • 啟動容器

若容器已被停止,可以使用以下指令再次啟動:

docker start my-nginx
  • 重啟容器

若要重啟一個正在運行的容器:

docker restart my-nginx
  • 移除容器

停止容器後,可使用以下指令移除容器:

docker rm my-nginx

確保在移除容器前先將其停止。

注意事項

  • 確保 Docker 服務正在運行。
  • 確保所使用的端口未被其他應用佔用。
  • 使用 Docker 時,可能需要管理員或超級用戶權限。

Docker 基本指令

以下 Docker 基本指令及其使用範例:

指令 描述
docker pull 從遠程倉庫下載指定的映像檔,用於本地使用。
docker run 創建並啟動一個新容器,可指定映像檔及命令。
docker start 啟動一個或多個已經創建但處於停止狀態的容器。
docker stop 安全地停止一個正在運行的容器。
docker ps 列出當前正在運行的所有容器及其狀態信息。
docker images 顯示本機已下載的所有映像檔列表及其資訊。
docker rm 刪除一個或多個指定的容器,釋放資源。
docker rmi 移除一個或多個指定的映像檔,清理空間。
  • docker pull:從遠程倉庫下載映像檔(Image)

    範例:下載官方的 Ubuntu 映像檔

    docker pull ubuntu
    

    範例:下載特定版本的 Nginx 映像檔

    docker pull nginx:1.17
    

  • docker run:運行一個容器(Container)

    範例:以交互模式運行 Ubuntu 容器,並開啟終端介面

    docker run -it ubuntu /bin/bash
    

    範例:在背景模式運行 Nginx 容器

    docker run -d nginx
    

    範例:運行一個容器並指定其名稱為 mynginx

    docker run --name mynginx -d nginx
    

  • docker start:啟動一個或多個已停止的容器

    範例:啟動名稱為 mycontainer 的容器

    docker start mycontainer
    

  • docker stop:停止一個運行中的容器

    範例:停止名稱為 mycontainer 的容器

    docker stop mycontainer
    

  • docker ps:列出正在運行的容器

    範例:列出所有正在運行的容器

    docker ps
    

    範例:列出所有容器,包括停止的

    docker ps -a
    

  • docker images:列出本地的映像檔

    範例:顯示本機所有下載或建立的映像檔

    docker images
    

  • docker rm:刪除一個或多個容器

    範例:刪除名稱為 mycontainer 的容器

    docker rm mycontainer
    

  • docker rmi:刪除一個或多個映像檔

    範例:刪除 Ubuntu 映像檔

    docker rmi ubuntu
    

    注意:刪除映像檔前需確保沒有任何容器正在使用該映像檔,或容器已經停止運作。