返回文章列表

Docker 容器安裝與指令操作

本文介紹 Docker 容器的優勢、安裝步驟以及常用指令操作。涵蓋 Mac OS X、Windows 和 Ubuntu Linux 等平台的安裝,並詳細說明 Docker 映像檔管理、容器操作、日誌檢視等關鍵技術。同時,本文也提供 Docker Hub 使用說明以及 Swarm

容器技術 DevOps

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

  1. 確認 Mac 型號為 2010 年後生產,且作業系統為 OS X 10.11 或更新版本。
  2. 前往 Docker 官方網站 下載 Docker for Mac(穩定版)。
  3. 開啟下載的套件,將 Docker 鯨魚圖示拖曳至「應用程式」資料夾。
  4. 啟動 Docker 應用程式,並依照提示完成安裝。
  5. 若曾安裝過 Docker Toolbox,將出現提示詢問是否複製現有映像檔和容器。
  6. 安裝完成後,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

內容解密:

  1. docker --version:用於檢查當前系統中 Docker 的版本資訊,確認安裝是否成功以及版本號。
  2. 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)。

安裝步驟

  1. 開啟瀏覽器並輸入以下網址:https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows。點選「Get Docker for Windows (Stable)」下載 Docker 安裝包。
  2. 下載完成後,雙擊安裝包開啟。您將看到授權協定畫面,如圖 6.9 所示。
  3. 接受授權協定並點選「Install」以開始安裝。
  4. 安裝完成後,您將在螢幕右下角看到「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

安裝步驟

  1. 更新套件列表:
$ sudo apt-get update

此命令將更新套件列表,如圖 6.13 所示。

  1. 安裝 linux-image-extra-* 套件(僅適用於 Trusty 14.04):
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
  1. 安裝 Docker 所需的套件:
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  1. 新增 Docker 官方儲存函式庫的 GPG 金鑰:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 驗證 GPG 金鑰指紋:
$ sudo apt-key fingerprint 0EBFCD88

程式碼解析

上述命令中,我們使用了 apt-get 命令來更新和安裝套件。以下是每個命令的作用:

內容解密:

  1. sudo apt-get update:更新套件列表,以確保我們擁有最新的套件資訊。
  2. sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual:安裝 linux-image-extra-* 套件,以允許 Docker 使用 AUFS 儲存驅動程式。
  3. sudo apt-get install apt-transport-https ca-certificates curl software-properties-common:安裝 Docker 所需的套件,包括 apt-transport-httpsca-certificatescurlsoftware-properties-common
  4. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -:新增 Docker 官方儲存函式庫的 GPG 金鑰,以確保下載的套件是安全的。
  5. 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。

內容解密:

  1. sudo add-apt-repository:此命令用於新增新的儲存函式庫到系統的軟體來源列表中。
  2. "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

內容解密:

  1. sudo apt-get update:此命令會更新本地的套件索引,使其包含最新新增的 Docker 儲存函式庫中的套件資訊。

步驟六:安裝最新版本的 Docker

現在,您可以安裝最新版本的 Docker 了。

$ sudo apt-get install docker-ce

內容解密:

  1. sudo apt-get install docker-ce:此命令會安裝 Docker 社群版(Docker CE)。Docker CE 是免費且開源的,適合大多數使用者的需求。

驗證 Docker 安裝

安裝完成後,您可以透過檢查 Docker 的版本來驗證是否安裝成功。

$ docker --version

內容解密:

  1. docker --version:此命令會顯示當前安裝的 Docker 版本號。

Docker 基本指令

Docker 搜尋

您可以使用 docker search 命令在 Docker Hub 上搜尋可用的映像檔。

docker search [選項] 關鍵字

例如,搜尋 MySQL 相關的映像檔:

docker search mysql

內容解密:

  1. docker search:此命令用於在 Docker Hub 上搜尋映像檔。
  2. [選項]:您可以指定各種選項來篩選搜尋結果。
  3. 關鍵字:您要搜尋的映像檔名稱或關鍵字。

使用篩選條件搜尋

您可以使用 --filter 選項來篩選搜尋結果。例如,找出星級評分大於或等於 50 的 MySQL 映像檔:

docker search --filter stars=50 mysql

內容解密:

  1. --filter stars=50:此選項會篩選出星級評分大於或等於 50 的映像檔。

Docker Pull

您可以使用 docker pull 命令從 Docker Hub 下載指定的映像檔到本地機器。

docker pull 映像檔名稱:標籤

例如,下載 MySQL 映像檔:

docker pull mysql

內容解密:

  1. docker pull:此命令用於從 Docker Hub 下載映像檔。
  2. 映像檔名稱:標籤:指定要下載的映像檔名稱和標籤。如果未指定標籤,預設會下載 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 目錄並列出其內容。

內容解密:

  1. docker run -it ubuntu sh:執行 Ubuntu 容器並進入互動式 shell。

    • -it 選項允許互動式操作。
    • ubuntu 指定要執行的映像檔。
    • sh 指定要在容器中執行的命令。
  2. echo 'Learning Docker':輸出字串 “Learning Docker”。

  3. ls:列出當前目錄下的檔案和目錄。

  4. cd bin:切換到 bin 目錄。

  5. ls:再次列出當前目錄(此時為 bin 目錄)下的檔案和目錄。

Docker ps 指令

docker ps 指令用於列出目前正在執行的容器:

docker ps [Options]

若要檢視所有容器(包括未執行的),可以使用 -a 選項:

docker ps -a

內容解密:

  1. docker ps:列出目前正在執行的容器。
  2. docker ps -a:列出所有容器,包括停止的容器。
    • -a 選項表示顯示所有容器。

Docker Logs 指令

docker logs 指令用於檢視指定容器的日誌輸出:

docker logs [Options] Container

此指令僅適用於使用 JSON File 日誌驅動程式的容器。

例如,檢視特定容器的日誌:

docker logs eded3539719c

內容解密:

  1. docker logs eded3539719c:檢視容器 ID 為 eded3539719c 的日誌輸出。
    • eded3539719c 是容器的 ID。

建立 MySQL 容器

首先,下載最新的 MySQL 映像檔:

docker pull mysql:latest

然後,可以使用下載的映像檔建立 MySQL 容器。

內容解密:

  1. docker pull mysql:latest:下載標籤為 latest 的 MySQL 映像檔。
    • mysql:latest 指定要下載的映像檔名稱和標籤。