Docker 安裝#

Docker 的安裝方式依作業系統而異,主要分為兩大類:

  • Docker Desktop:適用於 macOS、Windows、Linux 桌面環境,包含 GUI、VM、CLI 一整套
  • Docker Engine(server-side install):僅安裝 daemon 與 CLI,多用於 Linux 伺服器

兩者在指令使用上幾乎相同,但底層架構與授權條款有差異。

Docker Desktop 與 Docker Engine 的差異#

比較項目Docker DesktopDocker Engine
適用平台macOS / Windows / Linux 桌面Linux 伺服器
是否包含 VM是(背後啟動 LinuxKit VM)否(直接跑在 host kernel)
GUI
服務管理應用程式自身管理systemd 管理
商業授權大型企業需付費開源免費

在 macOS 與 Windows 上,由於沒有原生 Linux Kernel,Docker Desktop 必然需要一個 Linux VM 才能執行 Linux 容器。下一章會深入討論 macOS 的 VM 機制。

在 macOS 安裝 Docker Desktop#

macOS 上最簡單的方式是直接下載官方安裝包:

  1. 前往 https://www.docker.com/products/docker-desktop/
  2. 依 CPU 架構(Intel 或 Apple Silicon)下載對應 .dmg
  3. 拖曳至 /Applications
  4. 第一次啟動時會要求授予權限以建立 VM 與虛擬網路介面

或使用 Homebrew:

brew install --cask docker

啟動 Docker Desktop 後,可在終端確認:

docker version
docker info

預期輸出(具體值依環境而異):docker version 會列出 Client 與 Server 的版本,Server 部分的 OS/Arch 通常會顯示 linux/amd64linux/arm64,即使 host 是 macOS——因為 daemon 跑在 VM 內。

在 Windows 安裝 Docker Desktop#

Windows 安裝 Docker Desktop 之前,建議先啟用 WSL2:

  1. 啟用 Virtual Machine PlatformWindows Subsystem for Linux 選項
  2. 安裝 WSL2 並升級 kernel
  3. 下載 Docker Desktop for Windows 並安裝
  4. 在設定中選擇 Use the WSL 2 based engine

Windows 上的 Docker Desktop 實際上利用 WSL2 提供的輕量 VM 來執行 Docker daemon。

在 Linux 安裝 Docker Engine#

Linux 上推薦直接安裝 Docker Engine,不需要 VM 中介層。以下分別介紹 Debian/Ubuntu 系與 RHEL/CentOS 系的安裝方式。

Ubuntu / Debian(apt)#

新增 Docker 官方 APT 倉庫並安裝:

# 移除舊版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安裝必要工具
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 加入 Docker 官方 GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 加入 APT 來源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安裝 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

RHEL / CentOS / Rocky(yum / dnf)#

# 移除舊版本
sudo yum remove docker docker-client docker-common docker-engine

# 加入 Docker 官方倉庫
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安裝 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io

由 systemd 管理 Docker 服務#

Linux 上的 Docker Engine 通常以 systemd service 形式運作。常用指令:

# 啟動 Docker
sudo systemctl start docker

# 設為開機自動啟動
sudo systemctl enable docker

# 確認狀態
sudo systemctl status docker

# 重新啟動
sudo systemctl restart docker

# 停止
sudo systemctl stop docker

預期輸出(具體值依環境而異):status 會顯示 active (running),並列出 daemon 的 PID 與最近幾行 log。

將使用者加入 docker 群組#

預設情況下,只有 root 或 docker 群組成員可以執行 docker 指令。將目前使用者加入群組:

sudo usermod -aG docker $USER
# 重新登入或執行
newgrp docker

加入 docker 群組等同於賦予該使用者 root 權限(因為可以掛載 host 任意路徑進容器)。在多人共用的伺服器上請審慎評估。

驗證安裝#

執行 hello-world 映像確認安裝成功:

docker run --rm hello-world

預期輸出(具體值依環境而異):會看到一段 Hello from Docker! 文字,並說明 Docker daemon 已成功從 Docker Hub pull 映像、建立容器、執行並回傳訊息。

延伸閱讀#