Docker 已經成為現代軟體開發流程中不可或缺的一部分,其容器化技術讓應用程式在不同環境中的佈署更加便捷。本文將引導讀者在 Windows 和 Ubuntu 系統上正確安裝 Docker,並詳細說明 docker imagesdocker rmidocker run 等核心命令的使用方法,以及 Dockerfile 的撰寫與自訂映像檔的構建技巧。透過這些實用技巧,開發者可以更有效率地管理和操作 Docker 容器,提升軟體開發和佈署的效率。對於 Windows 系統,文章特別針對 Windows 10 Pro、Enterprise 和 Education 版本進行說明,並提醒讀者在安裝前確認 Hyper-V 套件已啟用。在 Ubuntu 系統上,文章則涵蓋了 Trusty、Yakkety 和 Xenial 等版本的安裝步驟,並詳細說明瞭如何新增 Docker 儲存函式庫、更新系統套件以及驗證安裝結果。除了安裝步驟,文章還探討了 Docker 的基本使用指令,例如使用 docker run 啟動容器、使用 docker ps 列出執行中的容器,以及使用 docker stop 停止容器等。

Docker 安裝

Docker 是一種開源的容器化技術,能夠讓開發者在不同環境中快速佈署應用程式。本文將介紹如何在 Windows 和 Ubuntu Linux 上安裝 Docker,並提供基本的使用。

Windows 系統上安裝 Docker

這篇安裝假設您使用的是 64 位元的 Windows 10 Pro、Enterprise 或 Education 版本。安裝 Docker 前,請確認 Hyper-V 套件已啟用。若未啟用,請參考 Docker 官方檔案進行設定。

安裝步驟

  1. 下載 Docker:在瀏覽器中輸入以下 URL:https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows,然後點選「Get Docker for Windows (Stable)」開始下載。

  2. 安裝程式:雙擊下載的安裝包,您應該會看到授權協定畫面。

  3. 接受協定:勾選授權協定的同意框,然後點選「Install」進行安裝。

  4. 完成安裝:安裝完成後,您應該會在右下角看到「Docker is starting」的提示。等待 Docker 啟動完成即可。

驗證安裝

開啟終端機,輸入以下指令來驗證 Docker 版本:

docker --version

您應該會看到類別似以下的輸出:

Docker version 17.03.0-ce, build 60ccb22

接著,您可以使用以下指令來列出所有可用的 Docker 指令:

docker --help

Ubuntu Linux 上安裝 Docker

接下來,我們將介紹如何在 Ubuntu Linux 上安裝 Docker。這篇假設您使用的是 64 位元版本的 Ubuntu,且為以下之一:

  • Trusty 14.04
  • Yakkety 16.10
  • Xenial 16.04

您可以使用以下指令來檢查系統版本:

lsb_release -a

安裝步驟

  1. 更新系統包:首先,更新系統包以確保所有依賴項都是最新的:
sudo apt-get update
  1. 安裝必要套件:如果您使用的是 Trusty 14.04,建議安裝 linux-image-extra-* 包以支援 AUFS 儲存驅動程式:
sudo apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual
  1. 新增 Docker 儲存函式庫:執行以下指令來新增 Docker 的官方儲存函式庫:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
  1. 驗證 GPG 金鑰:確認金鑰指紋正確:
sudo apt-key fingerprint 0EBFCD88
  1. 安裝 Docker CE:更新系統包清單並安裝 Docker CE:
sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

sudo apt-get update

sudo apt-get install docker-ce

驗證安裝

安裝完成後,您可以使用以下指令來驗證 Docker 是否成功安裝:

docker --version

基本使用指令

Docker 提供了豐富的指令來管理容器。以下是一些基本的使用指令:

  • 啟動容器:使用 docker run 指令來啟動一個新的容器:
docker run hello-world

這個指令會下載一個測試映像並啟動它,顯示一則歡迎訊息。

  • 列出所有容器:使用 docker ps 指令來列出所有正在執行的容器:
docker ps
  • 停止容器:使用 docker stop 指令來停止一個執行中的容器:
docker stop <container_id>

語法解密:

docker run hello-world 命令是用來執行名為 hello-world 的映像檔案。這個映像檔案是一個簡單的測試映像檔案,當它被執行時會顯示一條歡迎訊息。

  graph TD;
    A[docker run hello-world] --> B[Download hello-world image];
    B --> C[Run container];
    C --> D[Display welcome message];

此圖示展示了 docker run hello-world 命令的執行流程。首先會下載 hello-world 映像檔案,然後啟動容器並顯示歡迎訊息。

Ubuntu 安裝 Docker 及使用技巧

在現代雲端運算與容器化技術中,Docker 絕對是不可或缺的工具。無論是開發、測試還是佈署應用程式,Docker 都能大幅提升效率。接下來,玄貓將帶領你一步步在 Ubuntu 上安裝 Docker,並介紹一些常用的 Docker 指令。

Docker 安裝步驟

準備工作

首先,確保你的 Ubuntu 系統已經更新到最新版本:

sudo apt-get update
sudo apt-get upgrade

安裝必要的軟體套件

為了讓 Docker 能夠順利安裝,你需要安裝一些必要的套件:

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

新增 Docker 官方 GPG 金鑰

接下來,你需要新增 Docker 的 GPG 金鑰,以確保下載的軟體是安全的:

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

新增 Docker 儲存函式庫

現在,將 Docker 的儲存函式庫新增到 APT 源中:

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

更新套件索引

更新 APT 套件索引,以包含新新增的 Docker 儲存函式庫:

sudo apt-get update

安裝最新版本的 Docker

最終,安裝最新版本的 Docker:

sudo apt-get install docker-ce

安裝完成後,你可以透過以下指令檢查 Docker 的版本來確認安裝是否成功:

docker --version

常用 Docker 指令

搜尋 Docker 映像檔

Docker 提供了一個簡單的指令來搜尋可用的映像檔。以下是搜尋 MySQL 映像檔的範例:

docker search mysql

此指令會顯示所有包含「mysql」在名稱中的映像檔。如果你想要過濾出星級較高的映像檔,可以使用 --filter 選項:

docker search --filter stars=50 mysql

提取 Docker 映像檔

要從 Docker Registry 下載特定的映像檔到本地機器,可以使用 docker pull 指令。例如,下載 MySQL 最新版本的映像檔:

docker pull mysql:latest

如果不指定標籤(tag),Docker 會預設提取最新版本(latest)。

執行 Docker 容器

提取完映像檔後,你可以使用 docker run 指令來執行容器。以下是執行 MySQL 容器的範例:

docker run -d -p 3306:3306 --name my-mysql-container mysql:latest

這個指令會在背景模式下執行 MySQL 容器,並將主機上的 3306 埠對映到容器內的 3306 埠。

檢視正在執行中的容器

要檢視所有正在執行中的容器,可以使用以下指令:

docker ps

這個指令會顯示所有正在執行中的容器及其相關資訊。

Dockerfile 與自訂映像檔

Dockerfile 是一個包含一組指令的檔案,這些指令會被 Docker Daemon 執行以建立自訂映像檔。以下是一個簡單的 Dockerfile 範例:

# 根據官方 Python 映像檔
FROM python:3.8-slim

# 設定工作目錄
WORKDIR /app

# 複製當前目錄下的所有檔案到工作目錄中
COPY . /app

# 安裝所需套件
RUN pip install -r requirements.txt

# 暴露應用程式埠號
EXPOSE 5000

# 執行應用程式
CMD ["python", "app.py"]

建立自訂映像檔

使用 docker build 指令來建立自訂映像檔:

docker build -t my-python-app .

這個指令會在當前目錄下構建一個名為 my-python-app 的映像檔。

Docker 容器技術與命令操作

在現代軟體開發與佈署中,Docker 已成為不可或缺的工具之一。它透過容器技術,讓開發者能夠在不同環境中保持應用的一致性。以下將探討 Docker 的核心命令,特別是 docker imagesdocker rmidocker run 這三個關鍵命令。

Docker Images

docker images 命令用來列出本地機器上所有可用的頂層映像(image)。這些映像是 Docker 容器的基礎,每個映像都包含了應用所需的全部依賴和組態。

docker images [options]

例如,使用 docker images -a 可以列出所有頂層映像,並顯示它們的倉函式庫、標籤、建立日期以及虛擬大小。這些資訊對於管理和維護本地 Docker 環境非常重要。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              91e54dfb1179        4 weeks ago         188.4 MB
<none>              <none>              d74508fb6632        4 weeks ago         188.4 MB

從上述輸出可以看到,ubuntu:latest 是一個頂層映像,而 <none> 則是中間層映像。這些中間層映像在 Docker 架構中扮演著重要角色,但通常不會直接顯示在列表中。

內容解密:

  • 頂層映像:這些是直接可以使用的映像,通常包含完整的應用環境。
  • 中間層映像:在構建映像的過程中會產生多個中間層,每一層都代表一個操作(如安裝軟體包、複製檔案等)。
  • VIRTUAL SIZE:這指的是映像的虛擬大小,即所有層級合併後的總大小。

Docker RMI

docker rmi 命令用來刪除本地機器上的指定映像。這對於清理不再需要的映像或釋放磁碟空間非常有用。

docker rmi [options] image [image, image...]

例如,以下命令會刪除本地的 MySQL 機影:

docker rmi mysql

執行後會顯示刪除過程中的詳細資訊:

Untagged: mysql:latest
Deleted: sha256:6762f304c83428bf1945e9ab0aa05119a8a758d33d93eca50ba03665a89b5d97
Deleted: sha256:065018fec3d7c28754f0d40a3c1d56f103996a49f2995fde8c79edlbd524a9d0
...

內容解密:

  • Untagged:這表示刪除了對應的標籤。
  • Deleted:這表示實際刪除了對應的映像層。
  • sha256:這是映像的唯一識別符號(hash),確保了每個映像都是獨特的。

Docker Run

docker run 命令用來建立並啟動一個新的 Docker 容器。這是將下載好的映像轉換為執行中的容器的關鍵步驟。

docker run [options] image:tag [command, args]

以下是一些常見的選項:

  • -i:互動模式,保持標準輸入開啟。
  • -t:分配一個偽終端。
  • -d:在後台執行容器。
  • --name:為容器指定一個名稱。

例如,提取 Ubuntu 的最新版本並執行:

docker pull ubuntu:latest
docker run -it ubuntu:latest /bin/bash

第一條命令會提取最新版本的 Ubuntu 機影到本地:

Parminders-MacBook-Pro:~ parminderkocher$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest

第二條命令則會啟動一個新的 Ubuntu 容器並進入互動式 shell:

root@container-id:/#

內容解密:

  • 互動模式(-i):讓使用者可以與容器進行互動。
  • 偽終端(-t):提供一個終端介面來進行操作。
  • 後台執行(-d):讓容器在背景執行,不佔用前台終端。
  • 指定名稱(–name):方便管理和查詢特定容器。

本地化與專業深度

在實務應用中,玄貓經常遇到需要管理和佈署多種不同應用的情況。Docker 的強大之處在於它能夠透過映像和容器來隔離不同環境中的依賴關係,從而避免了「它在我機器上可以運作」這類別問題。然而,這也意味著需要謹慎管理和維護映像和容器,避免佔用過多資源或導致安全漏洞。

深入分析

  1. 中間層管理:雖然中間層不會直接顯示在 docker images 中,但它們對於理解和最佳化 Docker 架構至關重要。每一次 Dockerfile 中的操作都會產生一個新的層級,瞭解如何精簡這些操作可以顯著減少最終映像的大小。
  2. 清理過時映像:定期使用 docker rmi 清理不再需要的映像和中間層,可以有效釋放磁碟空間並減少潛在安全風險。
  3. 容器執行選項:根據具體需求選擇適當的 docker run 選項,如互動模式、後台執行和資源限制等,可以更靈活地控制容器行為。