Docker 容器技術以其輕量化、可移植性和易於管理等特性,成為現代軟體開發和佈署的重要工具。本文旨在提供 Docker 的完整安裝和常用指令說明,涵蓋 Mac OS X、Windows 和 Ubuntu Linux 等主流平台。讀者將學習如何安裝 Docker、管理映像檔、執行容器、檢視日誌以及使用 Docker Hub 等核心技能,為應用程式容器化佈署奠定基礎。此外,文章也簡要介紹了 Docker Swarm 模式,讓讀者瞭解 Docker 叢集管理的便捷性。
Docker 容器與安裝
輕量級 Docker 容器優勢
Docker 容器的最大特色是其輕量性,如圖 5.4 和 5.5 所示,無需獨立作業系統,簡化了維護與擴充套件流程。其主要優勢包括:
- 簡易升級流程:例如升級 MySQL 映像檔時,只需停止當前 MySQL 容器,下載最新映像檔並重新啟動,同時對映至相同資料卷。
- 重用性:可根據需求自定義 WordPress 版本,下載不同 WordPress 映像檔並執行多個容器,同時連結至相同資料函式庫。
- 簡單叢集管理:Docker 提供原生 Swarm 模式,可快速建立叢集、負載平衡和服務探索。
Docker 安裝
Docker 的安裝過程現已簡化,支援多數主流 Linux 發行版,如 CentOS、Ubuntu 和 Amazon Linux。本章節將介紹如何在 Mac OS X、Windows 和 Ubuntu Linux 上安裝 Docker。
在 Mac OS X 上安裝 Docker
- 確認 Mac 型號為 2010 年後生產,且作業系統為 OS X 10.11 或更新版本。
- 前往 Docker 官方網站 下載 Docker for Mac(穩定版)。
- 開啟下載的套件,將 Docker 鯨魚圖示拖曳至「應用程式」資料夾。
- 啟動 Docker 應用程式,並依照提示完成安裝。
- 若曾安裝過 Docker Toolbox,將出現提示詢問是否複製現有映像檔和容器。
- 安裝完成後,Docker 引擎將啟動,並可選擇註冊 Docker Hub 帳戶。
驗證 Docker 安裝
開啟終端機視窗,執行 docker --version 以確認已安裝的 Docker 版本。
docker --version
輸出範例如下:
Docker version 17.03.0-ce, build 60ccb22
執行 docker --help 可檢視所有可用指令:
docker --help
輸出內容包含 Docker 的所有管理指令和選項,如管理容器、映像檔、網路等。
Docker Hub 簡介
Docker Hub 是用於儲存和分發 Docker 映像檔的雲端註冊服務,提供公開空間存放映像檔,也可選擇付費私有選項限制存取許可權。
重點解析
- Docker 的輕量性簡化了升級和重用流程。
- Swarm 模式提供了簡單的叢集管理功能。
- Docker Hub 為映像檔管理提供了便利的雲端服務。
程式碼解析
docker --version
docker --help
內容解密:
docker --version:用於檢查當前系統中 Docker 的版本資訊,確認安裝是否成功以及版本號。docker --help:列出 Docker 所有可用的指令和選項,幫助使用者瞭解如何操作 Docker 環境和管理資源。
Docker 安裝
Docker 是一種容器化技術,能夠簡化應用程式的佈署和管理。本章節將指導如何在 Windows 和 Ubuntu Linux 上安裝 Docker。
在 Windows 上安裝 Docker
本安裝適用於 64 位元的 Windows 10 Pro、Enterprise 或 Education 版本。同時,必須啟用 Hyper-V 套件才能正確安裝 Docker。如果尚未啟用,請參考 Docker 官方檔案(https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows)。
安裝步驟
- 開啟瀏覽器並輸入以下網址:https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows。點選「Get Docker for Windows (Stable)」下載 Docker 安裝包。
- 下載完成後,雙擊安裝包開啟。您將看到授權協定畫面,如圖 6.9 所示。
- 接受授權協定並點選「Install」以開始安裝。
- 安裝完成後,您將在螢幕右下角看到「Docker is starting」的彈出視窗。啟動完成後,您將看到如圖 6.10 所示的彈出視窗,表示安裝成功。
驗證安裝
開啟終端機視窗並執行 docker --version 以確認已安裝的 Docker 版本,如圖 6.11 所示。
C:\Users>docker --version
Docker version 17.03.0-ce, build 60ccb22
C:\Users>
執行 docker --help 以列出可用的 Docker 命令。
在 Ubuntu Linux 上安裝 Docker
本安裝適用於 64 位元的 Ubuntu 版本,包括 Trusty 14.04、Yakkety 16.10 和 Xenial 16.04。您可以執行以下命令以檢查您的 Ubuntu 版本,如圖 6.12 所示。
$ lsb_release -a
安裝步驟
- 更新套件列表:
$ sudo apt-get update
此命令將更新套件列表,如圖 6.13 所示。
- 安裝
linux-image-extra-*套件(僅適用於 Trusty 14.04):
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
- 安裝 Docker 所需的套件:
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 新增 Docker 官方儲存函式庫的 GPG 金鑰:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 驗證 GPG 金鑰指紋:
$ sudo apt-key fingerprint 0EBFCD88
程式碼解析
上述命令中,我們使用了 apt-get 命令來更新和安裝套件。以下是每個命令的作用:
內容解密:
sudo apt-get update:更新套件列表,以確保我們擁有最新的套件資訊。sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual:安裝linux-image-extra-*套件,以允許 Docker 使用 AUFS 儲存驅動程式。sudo apt-get install apt-transport-https ca-certificates curl software-properties-common:安裝 Docker 所需的套件,包括apt-transport-https、ca-certificates、curl和software-properties-common。curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -:新增 Docker 官方儲存函式庫的 GPG 金鑰,以確保下載的套件是安全的。sudo apt-key fingerprint 0EBFCD88:驗證 GPG 金鑰指紋,以確保金鑰的正確性。
在 Ubuntu Linux 上安裝 Docker
步驟四:將 Docker 儲存函式庫新增到 APT(高階套件工具)來源
首先,您需要將 Docker 的官方儲存函式庫新增到您的 Ubuntu 系統中,以便能夠安裝和更新 Docker。這可以透過執行以下命令來完成:
$ sudo add-apt-repository "deb [arch=amd64] <DOCKER-EE-URL> $(lsb_release -cs) stable"
請注意,您需要將 <DOCKER-EE-URL> 替換為適當的 Docker 儲存函式庫 URL。
內容解密:
sudo add-apt-repository:此命令用於新增新的儲存函式庫到系統的軟體來源列表中。"deb [arch=amd64] <DOCKER-EE-URL> $(lsb_release -cs) stable":這是儲存函式庫的詳細資訊。其中,[arch=amd64]指定了處理器架構,<DOCKER-EE-URL>是 Docker 儲存函式庫的 URL,$(lsb_release -cs)會動態取得當前 Ubuntu 版本的代號,而stable表示我們要使用穩定版本的 Docker。
步驟五:更新套件索引
增加了 Docker 儲存函式庫後,您需要更新系統的套件索引,以包含來自新新增的 Docker 儲存函式庫的套件資訊。
$ sudo apt-get update
內容解密:
sudo apt-get update:此命令會更新本地的套件索引,使其包含最新新增的 Docker 儲存函式庫中的套件資訊。
步驟六:安裝最新版本的 Docker
現在,您可以安裝最新版本的 Docker 了。
$ sudo apt-get install docker-ce
內容解密:
sudo apt-get install docker-ce:此命令會安裝 Docker 社群版(Docker CE)。Docker CE 是免費且開源的,適合大多數使用者的需求。
驗證 Docker 安裝
安裝完成後,您可以透過檢查 Docker 的版本來驗證是否安裝成功。
$ docker --version
內容解密:
docker --version:此命令會顯示當前安裝的 Docker 版本號。
Docker 基本指令
Docker 搜尋
您可以使用 docker search 命令在 Docker Hub 上搜尋可用的映像檔。
docker search [選項] 關鍵字
例如,搜尋 MySQL 相關的映像檔:
docker search mysql
內容解密:
docker search:此命令用於在 Docker Hub 上搜尋映像檔。[選項]:您可以指定各種選項來篩選搜尋結果。關鍵字:您要搜尋的映像檔名稱或關鍵字。
使用篩選條件搜尋
您可以使用 --filter 選項來篩選搜尋結果。例如,找出星級評分大於或等於 50 的 MySQL 映像檔:
docker search --filter stars=50 mysql
內容解密:
--filter stars=50:此選項會篩選出星級評分大於或等於 50 的映像檔。
Docker Pull
您可以使用 docker pull 命令從 Docker Hub 下載指定的映像檔到本地機器。
docker pull 映像檔名稱:標籤
例如,下載 MySQL 映像檔:
docker pull mysql
內容解密:
docker pull:此命令用於從 Docker Hub 下載映像檔。映像檔名稱:標籤:指定要下載的映像檔名稱和標籤。如果未指定標籤,預設會下載latest標籤的映像檔。
Docker 介面詳解
Docker 提供了一系列強大的指令來管理容器和映像檔,本章將探討 Docker 的關鍵指令及其使用方法。
Docker Images 指令
docker images 指令用於列出本地主機上的頂層映像檔。
docker images [選項]
例如,使用 docker images -a 可以顯示所有頂層映像檔的詳細資訊,包括儲存函式庫、標籤、建立日期和虛擬大小,如圖 7.5 所示。需要注意的是,該指令不會顯示中間層映像檔。
內容解密:
docker images:列出本地主機上的頂層映像檔。-a選項:顯示所有頂層映像檔,包括詳細資訊。- 中間層映像檔不會被顯示。
在建立或建置 Docker 映像檔時,會產生多個中間層,這些中間層使得容器更加輕量化和可重用。例如,使用 Dockerfile 建置映像檔時,每個指令都會產生一個新的映像檔層。
Docker RMI 指令
docker rmi 指令用於刪除本地主機上的指定映像檔。
docker rmi [選項] 映像檔 [映像檔...]
例如,使用 docker rmi mysql 可以刪除 MySQL 映像檔及其相關層,如圖 7.6 所示。
內容解密:
docker rmi:刪除指定的映像檔。mysql:要刪除的映像檔名稱。- 該指令會刪除映像檔及其相關層。
Docker Run 指令
docker run 指令用於執行指定的映像檔。
docker run [選項] 映像檔:標籤 [指令, 引數]
該指令會啟動一個具有獨立檔案系統、埠和 IP 位址的容器。使用者可以傳遞選項和引數來自定義容器的行為。
常見選項:
-i:切換到互動模式,開啟 STDIN。-t:分配偽終端機。-d:在背景執行容器。
例如,提取 Ubuntu 映像檔並執行 docker run 指令,如圖 7.7 和 7.8 所示。
docker pull ubuntu:latest
內容解密:
docker run:執行指定的映像檔。-i和-t選項:啟用互動模式和偽終端機。- 可以指定指令和引數來覆寫預設指令。
Docker 指令流程圖
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Docker 容器安裝與指令操作
package "Docker 架構" {
actor "開發者" as dev
package "Docker Engine" {
component [Docker Daemon] as daemon
component [Docker CLI] as cli
component [REST API] as api
}
package "容器運行時" {
component [containerd] as containerd
component [runc] as runc
}
package "儲存" {
database [Images] as images
database [Volumes] as volumes
database [Networks] as networks
}
cloud "Registry" as registry
}
dev --> cli : 命令操作
cli --> api : API 呼叫
api --> daemon : 處理請求
daemon --> containerd : 容器管理
containerd --> runc : 執行容器
daemon --> images : 映像檔管理
daemon --> registry : 拉取/推送
daemon --> volumes : 資料持久化
daemon --> networks : 網路配置
@enduml
此圖示展示了 Docker 指令的基本流程,從提取映像檔到執行容器,最後刪除映像檔。
圖表解說:
- 該圖表展示了 Docker 的基本操作流程。
- 從提取映像檔到執行容器,每一步驟都對應一個 Docker 指令。
- 圖表清晰地展示了 Docker 操作的邏輯順序。
Docker 關鍵指令詳解
Docker 提供了一系列強大的指令來管理容器和映像檔,以下是一些最常用的 Docker 指令及其應用範例。
執行 Ubuntu 容器
使用以下指令可以在本地主機上執行 Ubuntu 容器,並進入 shell 提示字元:
docker run -it ubuntu sh
在這個互動式 shell 中,可以執行各種 shell 指令,例如:
echo 'Learning Docker'
ls
cd bin
ls
這些指令分別輸出字串、列出當前目錄內容、切換到 bin 目錄並列出其內容。
內容解密:
docker run -it ubuntu sh:執行 Ubuntu 容器並進入互動式 shell。-it選項允許互動式操作。ubuntu指定要執行的映像檔。sh指定要在容器中執行的命令。
echo 'Learning Docker':輸出字串 “Learning Docker”。ls:列出當前目錄下的檔案和目錄。cd bin:切換到 bin 目錄。ls:再次列出當前目錄(此時為 bin 目錄)下的檔案和目錄。
Docker ps 指令
docker ps 指令用於列出目前正在執行的容器:
docker ps [Options]
若要檢視所有容器(包括未執行的),可以使用 -a 選項:
docker ps -a
內容解密:
docker ps:列出目前正在執行的容器。docker ps -a:列出所有容器,包括停止的容器。-a選項表示顯示所有容器。
Docker Logs 指令
docker logs 指令用於檢視指定容器的日誌輸出:
docker logs [Options] Container
此指令僅適用於使用 JSON File 日誌驅動程式的容器。
例如,檢視特定容器的日誌:
docker logs eded3539719c
內容解密:
docker logs eded3539719c:檢視容器 ID 為eded3539719c的日誌輸出。eded3539719c是容器的 ID。
建立 MySQL 容器
首先,下載最新的 MySQL 映像檔:
docker pull mysql:latest
然後,可以使用下載的映像檔建立 MySQL 容器。
內容解密:
docker pull mysql:latest:下載標籤為latest的 MySQL 映像檔。mysql:latest指定要下載的映像檔名稱和標籤。