返回文章列表

Docker 開發環境建置完全指南:從零開始的容器化準備

完整的Docker開發環境建置指南,涵蓋Docker Desktop安裝設定、Multipass虛擬機方案、Docker Hub帳號註冊、Git工具配置等所有必要步驟,為容器化開發與AI應用佈署建立堅實基礎,適合各種作業系統平台

容器化技術 開發環境建置 DevOps工具

Docker 開發環境建置的重要性與策略選擇

在開始探索容器化技術的奇妙世界之前,建立一個穩定且功能完整的開發環境是至關重要的第一步。就像建造房屋需要堅實的地基一樣,容器化開發也需要妥善配置的工具鏈與運作環境。一個規劃良好的開發環境不僅能讓學習過程更加順暢,更能在實際專案開發中提供可靠的技術支援,避免因環境問題而浪費寶貴的開發時間。

Docker 生態系統提供了多種環境建置方案,從整合式的 Docker Desktop 到輕量化的虛擬機方案,每種選擇都有其獨特的優勢與適用場景。Docker Desktop 適合希望快速上手的開發者,提供完整的圖形化介面與開箱即用的功能。Multipass 虛擬機方案則適合重視環境隔離的進階使用者,或是在資源受限的系統上運作。理解這些選項的差異,選擇最適合自己需求與工作環境的方案,是成功建立 Docker 開發環境的關鍵。

本文將系統性地介紹 Docker 環境建置的完整流程,從工具安裝到帳號註冊,從基本設定到最佳實踐建議。無論您使用的是 Windows、macOS 還是 Linux 系統,都能在本文中找到適合的安裝指引。我們不僅會說明安裝步驟,更會深入解釋每個工具的作用、配置選項的意義,以及在實務應用中可能遇到的問題與解決方案。透過這個全面的環境準備過程,您將建立起穩固的容器化開發基礎。

Docker Desktop:整合式開發環境的最佳選擇

Docker Desktop 是 Docker 官方提供的整合開發環境,將 Docker Engine、Docker Compose、Kubernetes 支援以及圖形化管理介面整合在單一應用程式中。這個設計理念讓開發者能夠透過簡單的安裝流程,快速獲得完整的容器化開發能力,而不需要分別安裝與設定多個獨立元件。對於剛接觸容器技術的開發者而言,Docker Desktop 提供了最平滑的學習曲線與最直覺的使用體驗。

Docker Desktop 的核心優勢與功能特色

Docker Desktop 的價值遠超過單純的安裝便利性,它整合了許多提升開發效率的進階功能。圖形化儀表板提供了容器、映像檔、卷冊與網路的視覺化管理介面,讓您可以透過點選操作來完成大部分的容器管理工作。內建的 Kubernetes 支援讓開發者能夠在本機環境中測試容器編排設定,無需額外架設 Kubernetes 叢集。Docker Compose 的深度整合使得多容器應用的開發與測試變得極為簡便。

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

package "Docker Desktop 架構" {
  
  component "圖形化介面\nDashboard" as GUI {
    rectangle "容器管理" as CM
    rectangle "映像檔管理" as IM
    rectangle "卷冊管理" as VM
    rectangle "網路設定" as NM
  }
  
  component "核心引擎層" as ENGINE {
    rectangle "Docker Engine" as DE
    rectangle "containerd" as CTD
    rectangle "runc" as RC
  }
  
  component "編排工具" as ORCH {
    rectangle "Docker Compose" as DC
    rectangle "Kubernetes" as K8S
  }
  
  component "命令列工具" as CLI {
    rectangle "docker CLI" as DCLI
    rectangle "kubectl" as KCLI
  }
  
  component "擴充功能" as EXT {
    rectangle "開發工具" as DT
    rectangle "監控工具" as MT
    rectangle "資料庫工具" as DBT
  }
  
  cloud "Docker Hub" as HUB
  
  GUI --> ENGINE
  CLI --> ENGINE
  ORCH --> ENGINE
  ENGINE --> CTD
  CTD --> RC
  ENGINE --> HUB
  GUI --> EXT
  
}

note right of GUI
  視覺化管理介面
  容器生命週期控制
  資源監控儀表板
end note

note left of ENGINE
  容器執行核心
  映像檔管理
  網路與儲存
end note

@enduml

Docker Desktop 還提供了擴充功能市場,開發者可以安裝各種第三方工具來增強功能。這些擴充功能涵蓋資料庫管理、日誌分析、效能監控、安全掃描等多個面向,讓 Docker Desktop 成為一個可擴充的開發平台。自動更新機制確保您始終使用最新版本的 Docker 引擎與相關工具,及時獲得新功能與安全性修補。跨平台一致性是另一個重要優勢,無論在 Windows、macOS 還是 Linux 上使用 Docker Desktop,都能獲得相同的功能與操作體驗。

資源管理功能讓開發者可以精確控制 Docker Desktop 使用的系統資源,包括 CPU 核心數、記憶體容量與磁碟空間。這對於在有限硬體資源上執行 Docker 特別重要,能夠在容器效能與系統回應速度之間取得平衡。檔案共享機制則允許主機系統與容器之間無縫共享檔案,簡化了開發工作流程。

Windows 系統上的 Docker Desktop 安裝指南

在 Windows 系統上安裝 Docker Desktop 之前,需要確認系統符合最低需求。作業系統版本需要是 Windows 10 64 位元專業版、企業版或教育版(建置版本 19041 或更高),或是 Windows 11 64 位元任何版本。家用版 Windows 10 也能執行 Docker Desktop,但需要額外啟用 WSL 2 (Windows Subsystem for Linux)。硬體方面,需要啟用 BIOS 層級的虛擬化支援,這在大多數現代電腦上都是預設啟用的。

首先前往 Docker 官方網站的產品頁面,下載 Windows 版本的 Docker Desktop 安裝程式。這是一個約 500MB 的執行檔,下載時間取決於網路速度。下載完成後,以管理員權限執行安裝程式,系統會顯示安裝精靈的歡迎畫面。

安裝過程中會出現配置選項對話框,其中最重要的是 WSL 2 整合設定。WSL 2 是微軟開發的 Linux 相容層,讓 Windows 系統能夠執行完整的 Linux 核心。Docker Desktop 在 Windows 上的運作依賴 WSL 2,因此強烈建議在安裝時啟用此選項。如果系統尚未安裝 WSL 2,安裝程式會提供安裝指引。另一個選項是新增桌面捷徑,方便快速啟動 Docker Desktop。

安裝程式會自動處理所有必要的元件安裝,包括 Docker Engine、Docker Compose、Kubernetes 支援等。這個過程可能需要數分鐘,取決於系統效能。安裝完成後,系統會要求重新啟動電腦以完成設定。重新開機後,Docker Desktop 會自動啟動,系統托盤會出現 Docker 鯨魚圖示。

初次啟動時,Docker Desktop 會進行初始化設定,包括啟動 Docker Engine、配置網路、建立預設的虛擬機等。這個過程可能需要幾分鐘時間。當鯨魚圖示停止動畫並變為靜止狀態時,表示 Docker Desktop 已準備就緒。點選鯨魚圖示可以開啟選單,提供快速存取 Dashboard、設定、文件等功能的選項。

驗證安裝是否成功,開啟 PowerShell 或命令提示字元視窗,執行版本檢查指令。這個指令會顯示 Docker Client 與 Docker Server 的版本資訊,以及其他相關元件的版本。如果看到這些資訊,表示 Docker Desktop 已正確安裝並執行。

docker --version

進一步驗證可以執行 Docker 的測試容器,這個指令會下載一個小型的測試映像檔並執行,如果一切正常,會顯示歡迎訊息。

docker run hello-world

macOS 系統上的 Docker Desktop 安裝指南

macOS 使用者在安裝 Docker Desktop 時需要注意處理器架構的差異。Apple 在 2020 年開始轉向自家設計的 Apple Silicon 晶片(M 系列),因此 Docker Desktop 提供了兩個不同的安裝版本:Intel 晶片版本與 Apple Silicon 版本。使用錯誤的版本雖然可能仍能執行,但效能會大幅降低。

確認您的 Mac 使用哪種處理器,點選左上角的蘋果選單,選擇「關於這台 Mac」。在「晶片」或「處理器」欄位中,如果顯示「Apple M1」、「Apple M2」等,則應下載 Apple Silicon 版本。如果顯示「Intel Core」,則應下載 Intel 版本。作業系統需求方面,Docker Desktop 需要 macOS 11.0 (Big Sur) 或更新版本。

前往 Docker 官方網站,根據您的晶片類型下載對應的 DMG 檔案。下載完成後,開啟 DMG 檔案,會看到一個應用程式安裝視窗。將 Docker.app 圖示拖曳到 Applications 資料夾,系統會開始複製檔案。複製完成後,從 Launchpad 或 Applications 資料夾開啟 Docker Desktop。

首次啟動時,macOS 會顯示安全性確認對話框,因為 Docker Desktop 需要系統管理員權限來配置網路與檔案系統存取。點選「開啟」確認,然後輸入您的管理員密碼。Docker Desktop 會開始初始化,這個過程包括安裝 Docker Engine、配置虛擬機、設定網路橋接等。選單列會出現 Docker 鯨魚圖示,初始化完成後圖示會停止動畫。

macOS 版本的 Docker Desktop 使用 HyperKit 虛擬化框架(Intel 版本)或 Apple Virtualization Framework(Apple Silicon 版本)來執行 Linux 虛擬機,因為 Docker 容器需要 Linux 核心。這個虛擬化層是透明的,使用者通常不需要關心其存在。Apple Silicon 版本的 Docker Desktop 效能特別出色,得益於 Apple 晶片的高效能與原生虛擬化支援。

安裝後的設定建議包括配置資源限制。在 Docker Desktop 的偏好設定中,可以調整分配給 Docker 的 CPU 核心數與記憶體容量。預設設定通常較為保守,如果您的 Mac 配備充足的記憶體(16GB 或更多),可以考慮增加分配給 Docker 的記憶體,以提升執行多個容器或資源密集型應用時的效能。

Linux 系統上的 Docker Desktop 安裝指南

雖然 Linux 使用者可以直接安裝 Docker Engine 而不需要 Docker Desktop,但 Docker Desktop 仍然提供了一些獨特的優勢,特別是圖形化管理介面與整合的開發工具。Docker Desktop for Linux 支援主流的 Linux 發行版,包括 Ubuntu、Debian、Fedora 等。

安裝前需要確保系統已安裝必要的依賴套件。對於 Ubuntu 使用者,這包括 qemu、systemd 等。Docker Desktop for Linux 使用 KVM (Kernel-based Virtual Machine) 虛擬化技術,因此需要 CPU 支援虛擬化並在 BIOS 中啟用。檢查 KVM 是否可用,可以執行檢查指令確認系統支援虛擬化。

kvm-ok

前往 Docker 官方網站下載對應 Linux 發行版的安裝套件,通常是 DEB 或 RPM 格式。以 Ubuntu 為例,下載 DEB 套件後,使用套件管理器安裝。

sudo apt install ./docker-desktop-<version>-<arch>.deb

安裝完成後,可以從應用程式選單啟動 Docker Desktop,或是使用指令啟動。Linux 版本的 Docker Desktop 同樣提供完整的圖形化介面,功能與 Windows、macOS 版本基本一致。

對於偏好使用原生 Docker Engine 的 Linux 使用者,可以選擇不安裝 Docker Desktop,而是直接安裝 Docker Engine。這種方式更輕量,但缺少圖形化介面與一些整合功能。Docker 官方文件提供了各主流發行版的 Docker Engine 安裝指引。

Multipass 虛擬機方案:環境隔離的替代選擇

對於希望將 Docker 環境與主機系統完全隔離的開發者,或是在不支援 Docker Desktop 的系統上工作的使用者,Multipass 提供了一個優雅的替代方案。Multipass 是 Canonical(Ubuntu 的母公司)開發的輕量級虛擬機管理工具,能夠快速建立與管理 Ubuntu 虛擬機實例。

Multipass 的技術優勢與應用場景

Multipass 的設計理念是簡化虛擬機的建立與使用流程,讓開發者能夠像使用容器一樣輕鬆地使用虛擬機。它在不同作業系統上使用不同的虛擬化技術:Windows 上使用 Hyper-V,macOS 上使用 HyperKit,Linux 上使用 KVM 或 LXD。這些都是各平台的原生虛擬化技術,提供良好的效能與穩定性。

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

package "Multipass 虛擬機架構" {
  
  rectangle "主機作業系統" as HOST {
    component "Windows/macOS/Linux" as OS
  }
  
  rectangle "Multipass 管理層" as MULTIPASS {
    component "VM 生命週期管理" as LIFECYCLE
    component "網路配置" as NETWORK
    component "儲存管理" as STORAGE
    component "映像檔管理" as IMAGES
  }
  
  rectangle "虛擬化層" as HYPERVISOR {
    component "Hyper-V (Windows)" as HYPERV
    component "HyperKit (macOS)" as HYPERKIT
    component "KVM (Linux)" as KVM
  }
  
  rectangle "Ubuntu 虛擬機" as VM {
    component "Ubuntu OS" as UOS
    component "Docker Engine" as DOCKER
    component "開發工具" as DEVTOOLS
  }
  
  actor "開發者" as DEV
  
  DEV --> MULTIPASS : multipass 指令
  MULTIPASS --> HYPERVISOR
  HYPERVISOR --> VM
  VM --> DOCKER : 容器執行環境
  
}

note right of VM
  完整隔離的環境
  可快照與還原
  資源限制可調整
end note

note left of MULTIPASS
  簡化的指令介面
  自動化配置
  跨平台一致性
end note

@enduml

使用 Multipass 的主要優勢在於完整的環境隔離。Docker 執行在獨立的虛擬機中,與主機系統完全分離,即使 Docker 或容器出現問題,也不會影響主機系統。這種隔離性在測試破壞性操作或不信任的容器時特別有價值。虛擬機可以輕鬆建立快照,在進行重大變更前保存狀態,需要時可以快速回復。

資源控制是另一個優勢,可以精確指定虛擬機使用的 CPU 核心數、記憶體容量與磁碟空間,而這些資源的調整不會影響其他虛擬機或主機系統。多虛擬機管理能力讓開發者可以同時執行多個隔離的 Docker 環境,例如一個用於開發,一個用於測試,互不干擾。

Multipass 特別適合以下場景:在資源受限的系統上執行 Docker,透過精確的資源分配避免影響主機效能。需要在同一台電腦上執行多個獨立的 Docker 環境,例如不同專案使用不同版本的 Docker。學習與實驗容器技術,可以隨時重建虛擬機而不擔心影響主要工作環境。CI/CD 流程中需要可重現的建構環境,虛擬機的一致性確保每次建構都在相同條件下進行。

Multipass 的安裝與基本配置

Multipass 的安裝過程簡單直接,在 Windows 系統上,前往 Multipass 官方網站下載 Windows 安裝程式,執行安裝精靈完成安裝。安裝程式會自動配置 Hyper-V 虛擬化支援,如果系統未啟用 Hyper-V,會提供啟用指引。

在 macOS 系統上,可以使用 Homebrew 套件管理器快速安裝 Multipass,這是最簡便的安裝方式。

brew install --cask multipass

Linux 使用者可以使用 Snap 套件管理器安裝,Snap 在大多數現代 Linux 發行版上都可用。

sudo snap install multipass

安裝完成後,驗證安裝是否成功,執行版本檢查指令。接著就可以建立第一個虛擬機,Multipass 提供了專為 Docker 最佳化的虛擬機範本,使用 docker 範本建立虛擬機會自動安裝並設定 Docker Engine。

multipass launch docker --name docker-dev

這個指令會建立一個名為 docker-dev 的虛擬機,使用預先配置 Docker 的映像檔。第一次執行時會下載 Ubuntu 映像檔,這可能需要幾分鐘。建立完成後,虛擬機會自動啟動。列出所有虛擬機檢視狀態,輸出會顯示虛擬機名稱、狀態、IP 位址與使用的映像檔。

multipass list

在 Multipass 虛擬機中使用 Docker

要在虛擬機中執行 Docker 指令,首先需要進入虛擬機的 shell 環境。

multipass shell docker-dev

這會開啟一個 SSH 連線到虛擬機,您會看到命令提示字元變為 ubuntu@docker-dev。現在所有指令都在虛擬機內執行。驗證 Docker 已正確安裝,執行 Docker 版本指令與測試容器。

docker --version
docker run hello-world

從主機存取虛擬機中執行的服務需要知道虛擬機的 IP 位址。使用 multipass list 可以看到 IP 位址,或是在虛擬機內執行 ip addr show 查看詳細的網路介面資訊。當在虛擬機中執行容器並對映埠號時,可以透過虛擬機的 IP 位址從主機存取這些服務。

Multipass 提供了便利的檔案傳輸功能,可以在主機與虛擬機之間複製檔案。從主機複製檔案到虛擬機使用 transfer 指令,從虛擬機複製檔案到主機則反向操作。

multipass transfer local-file.txt docker-dev:/home/ubuntu/
multipass transfer docker-dev:/home/ubuntu/remote-file.txt ./

更進階的使用方式是掛載主機目錄到虛擬機,這樣可以直接在虛擬機中存取主機上的檔案,方便開發工作流程。

multipass mount /path/on/host docker-dev:/path/in/vm

虛擬機管理的基本指令包括停止虛擬機、啟動虛擬機、重啟虛擬機與刪除虛擬機。刪除虛擬機前建議先停止,刪除後虛擬機會進入回收站狀態,可以使用 recover 指令恢復,或使用 purge 指令永久刪除。

multipass stop docker-dev
multipass start docker-dev
multipass restart docker-dev
multipass delete docker-dev
multipass purge

Docker Hub:容器映像檔的中央倉庫

Docker Hub 是 Docker 官方提供的公開容器註冊表服務,扮演著容器生態系統中樞的角色。它不僅是映像檔的儲存與分發平台,更是開發者社群分享與協作的中心。理解如何有效使用 Docker Hub 對於容器化開發至關重要,它將大幅簡化映像檔管理與團隊協作流程。

Docker Hub 的核心功能與服務

Docker Hub 提供了豐富的功能,遠超過單純的映像檔儲存。公開映像檔函式庫包含數百萬個社群貢獻的映像檔,涵蓋各種程式語言執行環境、資料庫系統、Web 伺服器、開發工具等。這些映像檔都經過社群驗證與維護,可以直接使用或作為自訂映像檔的基礎。

官方映像檔是 Docker 與軟體供應商共同維護的高品質映像檔,包括 Ubuntu、Nginx、MySQL、Node.js 等常用軟體。這些映像檔經過安全掃描與最佳化,定期更新,是生產環境的推薦選擇。認證發行者計畫確保來自知名軟體廠商的映像檔品質與安全性,這些映像檔會顯示特殊的認證標章。

私有倉庫功能讓開發者可以建立不對外公開的映像檔倉庫,適合儲存商業專案或內部工具的映像檔。免費帳號提供一個私有倉庫,付費方案則提供更多私有倉庫與進階功能。自動建構服務可以連結 GitHub 或 Bitbucket 倉庫,當程式碼推送時自動建構並更新 Docker 映像檔,實現持續整合工作流程。

Webhook 整合允許在映像檔推送時觸發自定義動作,例如通知團隊成員、觸發部署流程等。團隊與組織功能支援多人協作,可以建立團隊、分配權限、管理多個倉庫。Docker Hub 還提供詳細的映像檔統計資訊,包括下載次數、受歡迎程度等,幫助評估映像檔的可信度。

註冊 Docker Hub 帳號的完整流程

建立 Docker Hub 帳號是免費且簡單的過程,但選擇合適的帳號設定對後續使用很重要。首先前往 Docker Hub 官方網站,點選右上角的 Sign Up 按鈕進入註冊頁面。

註冊表單要求填寫基本資訊,包括 Docker ID(使用者名稱)、電子郵件地址與密碼。Docker ID 的選擇需要謹慎考慮,因為它會成為您的映像檔命名空間的一部分。例如您的 Docker ID 是 johndoe,建立的映像檔名稱會是 johndoe/myapp。Docker ID 一旦建立就無法更改,只能重新註冊新帳號。

建議選擇專業且容易記憶的 Docker ID,避免使用過於個人化或臨時性的名稱。如果您代表公司或組織,可以使用組織名稱作為 Docker ID,或是創建組織帳號來管理多個成員。密碼應該足夠強健,結合大小寫字母、數字與特殊符號,並啟用雙因素認證以增強帳號安全性。

填寫完資訊後,閱讀並接受服務條款與隱私政策,然後提交註冊表單。Docker Hub 會發送驗證郵件到您提供的電子郵件地址,點選郵件中的驗證連結完成帳號啟用。驗證完成後,就可以登入 Docker Hub,探索可用的映像檔與設定個人倉庫。

在本機系統上登入 Docker Hub

註冊帳號後,需要在本機的 Docker 環境中登入 Docker Hub,才能推送映像檔到倉庫或存取私有映像檔。如果使用 Docker Desktop,最簡單的登入方式是透過圖形介面。點選系統托盤或選單列的 Docker 鯨魚圖示,選擇 Sign in 選項,輸入您的 Docker ID 與密碼。

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

actor "開發者" as DEV

participant "本機 Docker" as LOCAL
participant "Docker Hub" as HUB
database "映像檔倉庫" as REPO

DEV -> LOCAL : docker login
activate LOCAL
LOCAL --> DEV : 要求帳號密碼
DEV -> LOCAL : 輸入認證資訊
LOCAL -> HUB : 驗證身份
activate HUB
HUB --> LOCAL : 認證成功
deactivate HUB
LOCAL --> DEV : 登入完成
deactivate LOCAL

DEV -> LOCAL : docker push myapp:latest
activate LOCAL
LOCAL -> HUB : 推送映像檔
activate HUB
HUB -> REPO : 儲存映像檔
activate REPO
REPO --> HUB : 儲存完成
deactivate REPO
HUB --> LOCAL : 推送成功
deactivate HUB
LOCAL --> DEV : 映像檔已上傳
deactivate LOCAL

note right of HUB
  中央映像檔註冊表
  版本控制
  存取權限管理
end note

note left of LOCAL
  本機開發環境
  映像檔建構
  認證資訊儲存
end note

@enduml

透過命令列登入的方式更加通用,適用於自動化腳本與 CI/CD 流程。開啟終端機或命令提示字元,執行 docker login 指令。Docker 會提示您輸入使用者名稱與密碼,輸入完成後按 Enter。

docker login

如果登入成功,會看到類似「Login Succeeded」的訊息。認證資訊會被儲存在本機系統中,預設位置是使用者主目錄下的 .docker/config.json 檔案。這個檔案包含編碼後的認證資訊,Docker 在後續操作中會自動使用這些認證。

對於需要在腳本中自動登入的場景,可以使用環境變數或標準輸入傳遞密碼,但這種方式存在安全風險,只應在可控的環境中使用。更安全的做法是使用 Docker Hub 提供的存取權杖 (Access Token),而不是直接使用密碼。

在 Docker Hub 的帳號設定中,可以建立存取權杖,為每個權杖設定特定的權限範圍。使用權杖登入時,在密碼欄位輸入權杖而不是實際密碼。這種方式的優勢是可以隨時撤銷權杖而不影響帳號密碼,並且可以為不同用途建立不同權限的權杖。

登出 Docker Hub 使用 docker logout 指令,這會從本機系統移除儲存的認證資訊。

docker logout

Git 版本控制工具的安裝與配置

Git 是現代軟體開發不可或缺的版本控制系統,在容器化開發中扮演重要角色。Dockerfile、Docker Compose 設定檔、應用程式原始碼等都需要透過 Git 進行版本管理。許多 Docker 教學與範例程式碼也託管在 GitHub、GitLab 等 Git 平台上,安裝 Git 工具是取得這些資源的必要步驟。

Git 在容器化開發中的角色

Git 不僅用於管理應用程式原始碼,在容器化開發流程中有多個關鍵應用點。Dockerfile 版本控制讓團隊可以追蹤映像檔建構設定的變更歷史,理解每次變更的原因與影響。當映像檔建構出現問題時,可以輕鬆回復到之前的穩定版本。

Docker Compose 設定檔同樣需要版本控制,特別是在多容器應用越來越複雜的情況下。透過 Git 分支管理,可以為開發、測試、生產環境維護不同的設定版本。Git 標籤可以標記重要的版本里程碑,方便後續參考與部署。

CI/CD 整合是 Git 的另一個重要應用。當程式碼推送到 Git 倉庫時,可以觸發自動化的建構與測試流程,包括建構 Docker 映像檔、執行容器測試、推送到註冊表等。Docker Hub 的自動建構功能就是建立在 Git 整合之上,監聽 GitHub 或 Bitbucket 倉庫的變更,自動建構並更新映像檔。

團隊協作方面,Git 的分支與合併機制讓多個開發者可以並行工作在不同的容器化功能上,透過 Pull Request 進行程式碼審查與整合。.gitignore 檔案可以排除不應納入版本控制的檔案,例如建構快取、臨時檔案、敏感設定等。

Windows 系統上的 Git 安裝

在 Windows 系統上安裝 Git 最簡單的方式是使用官方的 Git for Windows 安裝程式。前往 Git 官方網站下載最新版本的安裝程式,這是一個約 50MB 的執行檔。

執行安裝程式會出現一系列配置選項,對於初學者,大部分選項使用預設值即可。其中幾個重要的選項值得注意。預設編輯器選擇會影響 Git 提交訊息的編輯體驗,預設是 Vim,但對不熟悉 Vim 的使用者可能不夠友善,可以選擇 Nano 或 Visual Studio Code 等更現代的編輯器。

PATH 環境變數設定決定了如何在命令列中使用 Git。推薦選項是「Git from the command line and also from 3rd-party software」,這會將 Git 加入系統 PATH,讓您可以在任何命令提示字元視窗中執行 Git 指令。

行結尾轉換設定處理不同作業系統間的文字檔案相容性問題。Windows 使用 CRLF 作為行結尾,而 Linux/macOS 使用 LF。推薦選項是「Checkout Windows-style, commit Unix-style line endings」,確保與跨平台團隊協作時的一致性。

安裝完成後,開啟命令提示字元或 PowerShell,執行 Git 版本指令驗證安裝。

git --version

macOS 與 Linux 系統上的 Git 安裝

macOS 系統通常已預裝 Git,作為 Xcode Command Line Tools 的一部分。開啟終端機執行 git –version,如果系統提示安裝 Command Line Tools,點選安裝即可。如果需要更新到最新版本,或是偏好使用 Homebrew 管理工具,可以透過 Homebrew 安裝 Git。

brew install git

Linux 系統上的 Git 安裝取決於使用的發行版。大多數發行版的套件倉庫都包含 Git,使用對應的套件管理器安裝即可。Ubuntu/Debian 系統使用 apt,Fedora 系統使用 dnf,Arch Linux 使用 pacman。

# Ubuntu/Debian
sudo apt update
sudo apt install git

# Fedora
sudo dnf install git

# Arch Linux
sudo pacman -S git

Git 基本設定與第一次使用

安裝 Git 後,建議進行基本的使用者設定,這些資訊會記錄在每次 Git 提交中。設定您的名稱與電子郵件地址,這些資訊會出現在 Git 提交歷史中。

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

檢視目前的 Git 設定,確認設定已正確儲存。

git config --list

克隆 Docker 範例程式碼倉庫是驗證 Git 安裝與熟悉 Git 操作的好方法。Git clone 指令會下載整個倉庫到本機,包括所有檔案與完整的版本歷史。

git clone https://github.com/docker/getting-started.git

這個指令會在當前目錄建立一個名為 getting-started 的資料夾,包含倉庫的所有內容。進入這個資料夾後,可以檢視檔案、執行 Docker 建構、修改程式碼等。Git 的其他常用指令包括檢視狀態、檢視提交歷史、建立分支等,這些將在後續的實際開發中逐漸掌握。

環境驗證與故障排除

完成所有工具的安裝後,進行全面的環境驗證能確保一切正常運作,避免在後續學習與開發中遇到環境問題。系統性的驗證流程可以及早發現與解決潛在問題。

全面的環境驗證檢查清單

首先驗證 Docker 是否正常執行,執行基本的版本檢查與測試容器。如果 Docker Desktop 正在執行,系統托盤或選單列應該顯示鯨魚圖示。執行 hello-world 測試容器驗證 Docker 能夠正確拉取映像檔與執行容器。

docker --version
docker compose version
docker run hello-world

檢查 Docker Hub 登入狀態,確認可以存取私有映像檔與推送功能。如果尚未登入,使用 docker login 指令登入。驗證 Git 安裝與設定,確認使用者資訊已正確設定。

git --version
git config user.name
git config user.email

嘗試克隆一個小型的測試倉庫,驗證 Git 可以正常存取網路倉庫。如果使用 Multipass 方案,列出虛擬機確認狀態,進入虛擬機驗證 Docker 可用。

對於資源配置的檢查,在 Docker Desktop 的設定中確認資源分配是否合理。記憶體方面,建議至少 4GB,如果經常執行多個容器或資源密集型應用,8GB 或更多會提供更好的體驗。CPU 核心數根據系統配置調整,通常分配一半的可用核心給 Docker 是合理的起點。

常見問題與解決方案

在環境建置過程中可能遇到各種問題,以下是一些常見情況與解決方法。Docker Desktop 無法啟動的問題,在 Windows 上通常與 WSL 2 配置有關,確認 WSL 2 已正確安裝並設為預設版本。在 macOS 上可能是權限問題,嘗試重新授予 Docker Desktop 系統權限。

容器無法存取網路的問題,檢查防火牆設定是否阻擋 Docker 的網路存取。在企業網路環境中,可能需要配置 HTTP 代理才能存取 Docker Hub。Docker Desktop 提供了代理設定介面,在設定中的 Resources > Proxies 區段配置。

映像檔拉取速度緩慢或失敗,可能是因為網路連線不穩定或 Docker Hub 暫時不可用。可以嘗試配置映像檔加速器,特別是在中國大陸地區,使用阿里雲、騰訊雲等提供的映像檔鏡像服務能顯著提升速度。

Git 克隆倉庫失敗的問題,確認網路連線正常,檢查防火牆是否阻擋 Git 協定。如果使用 HTTPS 克隆遇到 SSL 憑證錯誤,可能需要更新系統的憑證儲存或設定 Git 的 SSL 驗證選項。

資源不足導致容器執行緩慢或失敗,檢查 Docker Desktop 的資源分配設定,適當增加記憶體與 CPU 限制。監控主機系統的資源使用情況,確保有足夠的可用資源。關閉不必要的應用程式與背景程序可以釋放更多資源給 Docker。

最佳實踐與安全建議

建立開發環境不僅是安裝工具,更應該遵循最佳實踐來確保環境的安全性、穩定性與效率。良好的習慣從一開始就養成,能避免許多後續的麻煩。

定期更新所有工具到最新穩定版本,Docker Desktop、Git 等工具都會定期釋出更新,包含新功能、效能改進與安全性修補。開啟自動更新或定期手動檢查更新,確保使用的是最新版本。關注官方部落格與發行說明,了解新版本的變更內容。

Docker Hub 帳號安全方面,啟用雙因素認證 (2FA) 增加帳號安全性,即使密碼洩露也能防止未授權存取。使用強健的密碼,結合大小寫字母、數字與符號,避免在多個服務間重複使用相同密碼。定期審查帳號活動記錄,及時發現異常登入行為。

使用存取權杖而非密碼進行 API 存取與自動化操作,為不同用途建立不同的權杖,限制其權限範圍。定期輪換權杖,撤銷不再使用的舊權杖。避免在程式碼或配置檔案中硬編碼認證資訊,使用環境變數或密鑰管理服務。

Git 的安全使用包括不要將敏感資訊提交到版本控制,使用 .gitignore 排除包含密碼、API 金鑰等的檔案。如果不慎提交了敏感資訊,需要從歷史中移除而不僅是刪除檔案。使用 SSH 金鑰而非密碼進行 Git 認證,提供更好的安全性與便利性。

資源管理與效能最佳化方面,定期清理不使用的 Docker 映像檔、容器與卷冊,釋放磁碟空間。Docker Desktop 提供一鍵清理功能,也可以使用命令列工具進行更精細的清理。監控 Docker 的資源使用情況,調整資源分配以平衡效能與系統回應速度。

總結與下一步學習建議

完成開發環境的建置只是容器化學習旅程的第一步,但這是至關重要的基礎。一個配置良好的開發環境能讓後續的學習與實踐過程更加順暢,避免因環境問題而分散注意力。透過本文的指引,您已經建立了包含 Docker Desktop 或 Multipass、Docker Hub 帳號以及 Git 工具的完整開發環境。

下一階段的學習重點包括熟悉 Docker 的基本操作,執行與管理容器,理解映像檔的概念與使用。學習如何建構自訂映像檔,透過 Dockerfile 定義應用程式的容器化設定。掌握 Docker Compose 管理多容器應用,定義複雜的應用堆疊。

實踐是掌握技術的最佳途徑,建議從簡單的練習開始,逐步挑戰更複雜的場景。容器化現有的專案,體驗容器化帶來的便利性。參與開源專案,學習他人的 Dockerfile 與配置方式。建立個人的實驗環境,大膽嘗試各種配置與技術。

保持學習熱情與好奇心,容器技術仍在快速發展,新的工具與最佳實踐不斷湧現。關注 Docker 官方部落格、技術論壇與社群活動,與其他開發者交流經驗。持續探索與實踐,您將逐漸掌握容器技術的精髓,在現代軟體開發中游刃有餘。