應用程式架構總覽

本範例應用程式包含兩個容器(微服務):webstoreweb 容器執行一個 Python Flask 應用程式,顯示包含圖片、文字和計數器的網頁。每次重新整理頁面,計數器值就會遞增,並將數值儲存在 store 容器中的 Redis 資料函式庫中。

  graph LR
    subgraph Client
        A[瀏覽器] --> B(Web 應用程式)
    end
    B --> C[Redis 資料函式庫]
    subgraph Docker Host
        subgraph Internal Network
            D[web 容器] --> E[store 容器]
        end
        F[Port 5555] --> D
    end

圖表說明: 客戶端瀏覽器透過 5555 連線埠存取執行在 Docker Host 上的 Web 應用程式(web 容器)。Web 應用程式透過內部網路與 Redis 資料函式庫(store 容器)進行通訊,以儲存和更新計數器值。

Compose 檔案剖析

Compose 檔案是定義多容器應用程式的核心,以下是一個名為 compose.yaml 的 Compose 檔案範例:

networks:
  internal:

services:
  web:
    build: .
    command: python app.py
    ports:
      - "5555:8080"
    networks:
      - internal
  store:
    image: redis:alpine
    networks:
      - internal

內容解密:

  1. networks: 定義了一個名為 internal 的網路,供容器間通訊。
  2. services: 定義了應用程式中的服務(容器)。
    • web: Web 應用程式容器。
      • build: .: 指示 Docker 使用當前目錄下的 Dockerfile 建置映像檔。
      • command: python app.py: 容器啟動時執行的命令。
      • ports: - "5555:8080": 將主機的 5555 連線埠對映到容器的 8080 連線埠。
      • networks: - internal: 將容器連線到 internal 網路。
    • store: Redis 資料函式庫容器。
      • image: redis:alpine: 使用 redis:alpine 映像檔。
      • networks: - internal: 將容器連線到 internal 網路。

佈署應用程式

首先,確保您已複製本章的 GitHub 儲存函式庫,並位於 gsd-book/compose-app 目錄下。

git clone https://github.com/nigelpoulton/gsd-book.git
cd gsd-book/compose-app

執行以下命令啟動應用程式:

docker compose up -d

-d 引數讓應用程式在背景執行。Compose 會自動建置 web 映像檔並啟動兩個容器。

管理應用程式

您可以使用以下命令管理應用程式:

  • docker compose ps: 顯示應用程式中各容器的狀態。
  • docker compose logs: 檢視容器日誌。
  • docker compose down: 停止並移除容器、網路和映像檔。

本文介紹瞭如何使用 Docker Compose 佈署和管理多容器應用程式。透過 Compose 檔案,您可以輕鬆定義和管理複雜的微服務架構,簡化佈署流程並提高開發效率。

延伸思考

  • 探討不同型別的服務發現機制,例如 DNS-based 或 Key-value store based 的服務發現,並分析其優缺點和適用場景。
  • 研究如何使用 Docker Compose 建立更複雜的應用程式,例如包含多個 Web 伺服器、負載平衡器和資料函式庫的架構。
  • 思考如何將 CI/CD 流程整合到 Docker Compose 工作流程中,以實作自動化構建、測試和佈署。
  graph LR
    A[開發環境] --> B{Docker Compose Build}
    B --> C[映像檔儲存函式庫]
    C --> D{Docker Compose Deploy}
    D --> E[生產環境]

圖表說明: 簡化的 CI/CD 流程,從開發環境構建映像檔,推播到儲存函式庫,最後佈署到生產環境。

在現代軟體開發中,多容器應用程式已成為主流,而 Docker Compose 正是簡化這類別應用程式佈署與管理的利器。本文將探討 Docker Compose 的核心功能,並透過實際案例示範如何建構、管理和更新多容器應用程式。

Docker Compose 簡介

Docker Compose 是一個用於定義和執行多容器 Docker 應用程式的工具。透過 YAML 檔案,我們可以定義應用程式所需的服務、網路和儲存空間,並使用單一指令即可完成佈署和管理。

建構多容器應用程式

讓我們以一個簡單的應用程式為例,它包含一個 Web 伺服器和一個 Redis 資料函式庫。以下 docker-compose.yaml 檔案定義了這個應用程式:

version: "3.9"
services:
  web:
    image: nigelpoulton/gsd-book:latest
    ports:
      - "5555:8080"
  store:
    image: redis:alpine

內容解密:

這個 docker-compose.yaml 檔案定義了兩個服務:webstoreweb 服務使用 nigelpoulton/gsd-book:latest 映象,並將容器的 8080 埠對映到主機的 5555 埠。store 服務使用 redis:alpine 映象,提供 Redis 資料函式庫功能。

使用以下指令啟動應用程式:

docker compose up --detach

內容解密:

docker compose up 指令會根據 docker-compose.yaml 檔案的定義,建立並啟動應用程式中的所有服務。--detach 引數表示在後台執行容器。

管理應用程式

Docker Compose 提供了許多指令來管理應用程式,例如:

  • docker compose stop:停止應用程式
  • docker compose start:啟動應用程式
  • docker compose restart:重新啟動應用程式
  • docker compose ps:檢視應用程式中容器的狀態
  • docker compose logs:檢視應用程式的日誌

更新應用程式

更新應用程式非常簡單,只需修改 docker-compose.yaml 檔案,然後再次執行 docker compose up 指令即可。Docker Compose 會自動檢測變更,並只更新必要的服務。

例如,我們可以將 web 服務的映象更新到最新版本:

version: "3.9"
services:
  web:
    image: nigelpoulton/gsd-book:banner
    ports:
      - "5555:8080"
  store:
    image: redis:alpine

內容解密:

我們將 web 服務的映象更新為 nigelpoulton/gsd-book:banner

執行以下指令更新應用程式:

docker compose up --pull always --detach

內容解密:

--pull always 引數會強制 Docker 提取最新版本的映象。

刪除應用程式

使用以下指令刪除應用程式:

docker compose down --rmi all

內容解密:

docker compose down 指令會停止並移除應用程式中的所有容器、網路和儲存空間。--rmi all 引數會移除所有相關的映象。

Docker 與 AI

Docker 也廣泛應用於 AI 領域。開發者可以使用 Docker 建構和佈署 AI 應用程式,例如聊天機器人。透過 Docker Compose,可以輕鬆地管理 AI 應用程式所需的各種服務和依賴項。

視覺化應用程式架構

以下使用 Mermaid 圖表展示應用程式的架構:

  graph LR
  web --> store
  subgraph "應用程式"
    web["Web 伺服器"]
    store["Redis 資料函式庫"]
  end

內容解密:

此圖表顯示了 Web 伺服器和 Redis 資料函式庫之間的關係。Web 伺服器連線到 Redis 資料函式庫以存取資料。

透過 Docker Compose,我們可以輕鬆地建構、管理和更新多容器應用程式,簡化了開發和佈署流程。其在 AI 領域的應用也越來越廣泛,為 AI 應用程式的開發和佈署提供了便利。

本文探討了 Docker Compose 的使用方法,從建構、管理到更新多容器應用程式,並以一個簡單的 Web 應用程式搭配 Redis 資料函式庫為例,逐步示範瞭如何使用 Docker Compose。同時,也簡要介紹了 Docker 在 AI 領域的應用,並使用 Mermaid 圖表視覺化了應用程式架構。希望本文能幫助讀者更好地理解和應用 Docker Compose,提升多容器應用程式的開發和佈署效率。

使用 Docker 佈署 AI 聊天機器人

設計分散式系統時,我發現容器化技術能大幅簡化佈署流程。這個案例中,我們將使用 Docker 佈署一個多層次 AI 聊天機器人應用程式。此應用程式包含三個主要元件:聊天介面、後端 API 和模型伺服器。

模型伺服器是 AI 模型執行的地方,這裡我們使用 Ollama 來執行 Mistral AI 模型。我從官方 Docker 儲存函式庫複製了應用程式碼,並進行了一些調整,以確保與本文中的說明和範例一致。

下圖展示了聊天機器人的架構:聊天介面作為 Web 服務執行在 3000 埠,並且執行在 8000 埠的後端 API 伺服器通訊。後端 API 伺服器將提示 relay 到位於 http://ollama:11434 的模型伺服器,並串流傳回回應。模型伺服器使用 Ollama 在 11434 埠上提供本地 AI 模型例項,並使用 Docker volume 儲存模型。預設情況下,模型伺服器執行 Mistral AI 模型,但您可以將其組態為執行其他 AI 模型,例如 Llama。圖中也顯示了三個應用程式元件的 Docker images。

  graph LR
    subgraph 聊天介面
        A[Web 服務 (3000)]
    end
    subgraph 後端 API
        B[API 伺服器 (8000)]
    end
    subgraph 模型伺服器
        C[Ollama (11434)] --> D{模型}
    end
    A --> B
    B --> C

應用程式定義在 GitHub repo 的 ai/chatbot/ 資料夾中的 Compose 檔案中。為了便於閱讀,我省略了一些 Compose 檔案設定。

services:
  frontend:
    image: nigelpoulton/gsd-book:chat-frontend
    build: ./frontend
    ports:
      - "3000:3000"
    command: npm run start
    depends_on:
      - backend

  backend:
    image: nigelpoulton/gsd-book:chat-backend
    build: ./backend
    ports:
      - "8000:8000"
    environment:
      - MODEL_HOST=http://ollama:11434
    depends_on:
      ollama:
        condition: service_healthy

  ollama:
    image: nigelpoulton/gsd-book:chat-model
    build: ./ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    environment:
      - MODEL=${MODEL:-mistral:latest}

volumes:
  ollama_data:
    name: ollama_data

這個檔案定義了三個服務和一個 volume。這些服務分別稱為 frontendbackendollama,對應於上圖中的三個應用程式元件。您還可以看見 ollama 服務中的 MODEL 環境變數,它指示模型伺服器提取並使用最新的 Mistral AI 模型。您可以更改此變數以強制模型伺服器使用 Ollama 模型函式庫中的各種模型。例如,您可以將變數更新為 llama3.2:latest 以使用最新的 Llama 3.2 模型而不是 Mistral。並非所有模型都相同,Ollama 模型函式庫中的某些模型可能無法與此應用程式一起使用。我已經測試過 Mistral 和 Llama,接下來的範例將使用 Mistral。

佈署和測試聊天機器人

首先,您需要複製這篇文章的 GitHub repo:

git clone https://github.com/nigelpoulton/gsd-book

切換到 gsd-book/ai/chatbot/ 目錄,檢查 Compose 檔案是否存在。 compose.yaml 檔案適用於不支援 GPU 的系統,而 gpu-compose.yaml 檔案則為模型伺服器啟用 GPU 支援。

如果您的 Docker 主機已啟用 GPU 支援,請執行以下指令以啟動聊天機器人:

docker compose --file gpu-compose.yaml up --detach

如果您沒有 GPU 或不確定,請執行以下指令:

docker compose up --detach

第一次佈署時,Docker 將提取容器映像,Ollama 將提取 AI 模型。AI 模型大小約為數 GB,下載可能需要一些時間。如果您網路連線速度較慢,甚至可能會出現 chatbot-ollama-1 is unhealthy 訊息而超時。如果發生這種情況,您可以嘗試重新啟動應用程式。如果再次出現相同的錯誤,您可以編輯 Compose 檔案並增加 ollama 服務的 healthcheck.start_period 欄位的值。如果您網路連線速度很快,則應該不會遇到超時問題。

檢查應用程式的狀態:

docker compose ls

如果所有三個服務在 STATUS 欄位中都顯示為 running,則聊天機器人已啟動並正在執行。

透過瀏覽器開啟 http://localhost:3000 並向聊天機器人提出一些簡單的問題,以確保應用程式正常運作。

當聊天機器人推斷您問題的答案時,您可能會看到「Thinking」訊息,而與它偶爾可能無法回應。如果您在 CPU 上執行聊天機器人或記憶體只有最低的 8GB,則更有可能發生這種情況。您可以透過編輯 Compose 檔案、更改 ollama.deploy.resources.limits.memory 欄位的值並重新啟動聊天機器人來增加模型伺服器的記憶體。您可能需要增加分配給 Docker 的記憶體量才能產生影響。例如,如果 Docker 只有 8GB 記憶體,那麼為模型伺服器容器分配 16GB 記憶體是沒有用的。

使用聊天機器人完成程式設計任務

在這個部分,您將與您的聊天機器人組隊完成一個簡單的程式設計任務。

我的目標是與我的聊天機器人一起建立一個 Web 伺服器,顯示文字「Docker is great for AI」。

以下是我向聊天機器人提出的確切問題:

Write a simple node.js web app that listens on port 5005, displays the text “Docker is great for AI” in white text in the center of a blue screen, and Dockerize it.

以下是我 AI 聊天機器人的回應,它包含三個不同的步驟。我已修剪回應以符合這篇文章,但您可以在 ai/app 資料夾中找到完整專案的副本。

我的聊天機器人的回應:

  1. 這裡有一個使用 Express.js 的簡單 Node.js Web 應用程式,用於顯示文字「Docker is great for AI」。
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<style>
body {
background-color: #0096FF;
color: white;
}
</style>
</head>
<body>
Docker is great for AI
</body>
</html>`);
});

app.listen(5005, () => {
  console.log('App listening on port 505!');
});

內容解密:這段程式碼使用 Express.js 建立一個簡單的 Web 伺服器。它監聽 5005 埠,並在根路徑 / 回應一個 HTML 頁面。該頁面設定背景顏色為藍色,文字顏色為白色,並顯示「Docker is great for AI」訊息。

  1. 要 Docker 化應用程式,您需要在 app.js 檔案所在的目錄中建立一個 Dockerfile。以下是一個 Dockerfile 的範例:
FROM node:14-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5005
CMD [ "node", "app.js" ]

內容解密:這個 Dockerfile 使用 node:14-alpine 作為基礎映像。它將工作目錄設定為 /app,複製 package.jsonpackage-lock.json 檔案,安裝依賴項,複製應用程式碼,公開 5005 埠,並設定啟動指令為 node app.js

  1. 要建置 Docker image,請執行 docker build -t my-node-app:latest .。要從映像啟動容器,請執行 docker run -p 5005:5005 --name my-node-app my-node-app。您可以透過在 Web 瀏覽器中導覽到 http://localhost:5005 來存取應用程式。

透過這個例子,我們展示瞭如何使用 Docker 佈署一個 AI 聊天機器人應用程式,並利用它來完成程式設計任務。這展現了容器化技術在簡化 AI 應用程式佈署方面的優勢。

使用 Docker Compose 佈署 AI 聊天機器人與程式碼實作

在這個技術中,我們將探討如何利用 Docker Compose 在本地端佈署一個三層式 AI 聊天機器人,並示範如何運用它完成簡單的程式碼專案,同時解決過程中可能遇到的問題。這個聊天機器人的模型伺服器使用 Ollama 執行 Mistral AI 模型,並設定為程式碼輔助工具。所有元件都封裝在標準 Docker 映像檔中,透過 Docker Compose 進行佈署和管理。

佈署 AI 聊天機器人

透過簡單的 docker compose 指令,即可在本地端佈署一個複雜的三層式 AI 聊天機器人。以下步驟說明佈署過程,以及如何檢查各個元件的狀態。

  1. 執行 Docker Compose: 使用 docker compose up -d 命令啟動聊天機器人。如果使用 GPU 版本,則需執行 docker compose -f gpu-compose.yaml up -d

  2. 檢查 Ollama 安裝: 登入模型伺服器容器 docker exec -it chatbot-ollama-1 sh,執行 ollama --version 檢查 Ollama 版本。

  3. 檢查 Ollama 行程: 執行 ps -ef 命令檢視 ollama 行程是否在背景執行。

  4. 檢查 AI 模型: 使用 ollama ls 命令檢視已下載的 AI 模型,例如 Mistral 和 Gemma2。

  5. 檢查模型執行狀態: 使用 ollama ps 命令檢視模型是否正在執行。如果模型未啟用,可以透過與聊天機器人的網頁介面互動來觸發模型載入。

  6. 檢視模型設定: 使用 ollama show mistral 命令檢視 Mistral 模型的設定,例如架構、引數數量、上下文長度等。

程式碼實作與問題排除

以下,我們將示範一個簡單的程式碼專案,並利用聊天機器人協助佈署和除錯。

  1. 建立應用程式檔案: 建立名為 app 的資料夾,並在其中建立 app.js 檔案,將聊天機器人提供的程式碼複製到此檔案中。

  2. 建立 Dockerfile:app 資料夾中建立 Dockerfile 檔案,並加入以下程式碼:

FROM node:latest
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5005
CMD ["node", "app.js"]
  1. 建立 package.json:app 資料夾中建立 package.json 檔案,並加入以下程式碼:
{
  "dependencies": {
    "express": "^4.21.1"
  }
}
  1. 建置和執行 Docker 映像檔: 執行 docker build -t my-app . 命令建置映像檔,然後執行 docker run -p 5005:5005 my-app 命令啟動容器。

  2. 連線到應用程式: 開啟瀏覽器,存取 http://localhost:5005,確認應用程式是否正常運作。

系統架構

  graph LR
    A[Client Browser] --> B(Frontend Container)
    B --> C(Backend Container)
    C --> D(Model Server Container)
    D --> E[Mistral AI Model]

內容解密: 此圖表展示了聊天機器人的系統架構,客戶端瀏覽器連線到前端容器,前端容器與後端容器通訊,後端容器再與模型伺服器容器互動,最後模型伺服器容器執行 Mistral AI 模型。

清理資源

完成後,可以使用以下命令停止並移除聊天機器人相關的容器、映像檔和儲存空間:

docker compose down
docker compose down --volumes --rmi all

同時,也應移除在程式碼實作過程中建立的容器和映像檔。

本示範瞭如何使用 Docker Compose 佈署 AI 聊天機器人,並運用其輔助程式碼開發和問題排除。同時,也強調了 Mermaid 圖表在技術檔案中的重要性,透過視覺化圖表更清晰地呈現系統架構和流程。


## 深入淺出容器世界:基礎概念與實戰操作

在現代軟體開發中,容器化技術已成為不可或缺的一環。Docker 作為容器化技術的長官者,提供了一套簡化應用程式封裝、佈署和管理的解決方案。本文將引領您進入 Docker 的世界,從基礎概念到進階佈署策略,逐步解鎖容器化的奧秘。

### 容器操作:啟動、停止、刪除

Docker Desktop 和 Ollama 提供了便捷的容器操作介面。以下是一些常用的容器操作指令:

```bash
# 檢查系統上的現有映像檔和容器
docker images
docker ps

# 建立一個名為 test 的新容器,根據 nigelpoulton/gsd-book 映像檔
docker run -d --name test -p 5555:8080 nigelpoulton/gsd-book

# 檢查容器是否正在執行
docker ps

# 停止容器
docker stop test

# 重新啟動容器
docker start test

# 刪除容器
docker rm test -f

內容解密:

以上指令示範瞭如何使用 Docker 命令列工具管理容器。docker run 命令用於建立並啟動一個新的容器,-d 引數表示在後台執行容器,-p 引數用於對映連線埠,--name 引數用於指定容器名稱。docker stopdocker startdocker rm 命令分別用於停止、啟動和刪除容器。

容器化應用程式:構建與佈署

將應用程式容器化可以簡化佈署流程並提高可移植性。以下是一個使用 Docker 構建和佈署 Node.js 應用程式的範例:

# 進入應用程式目錄
cd gsd-book/node-app

# 使用 docker init 初始化 Dockerfile
docker init

# 構建映像檔
docker build -t node-app .

# 執行程式碼為容器
docker run -d --name web -p 8080:8080 node-app

# 刪除容器
docker rm web -f

# 刪除映像檔
docker rmi node-app

內容解密:

docker init 命令會根據您的應用程式型別和組態自動生成 Dockerfile、.dockerignore 和 compose.yaml 檔案。docker build 命令根據 Dockerfile 構建映像檔,-t 引數用於指定映像檔名稱。docker run 命令用於建立並啟動容器,-p 引數用於對映連線埠,--name 引數用於指定容器名稱。

映像檔與倉函式庫:管理與分享

Docker 映像檔是容器的範本,而 Docker Hub 則是一個用於儲存和分享映像檔的雲端倉函式庫。以下是如何將映像檔推播到 Docker Hub 的範例:

# 標記映像檔
docker tag node-app nigelpoulton/gsd-book

# 推播映像檔到 Docker Hub
docker push nigelpoulton/gsd-book

內容解密:

docker tag 命令用於為映像檔增加標籤,以便推播到 Docker Hub。docker push 命令用於將映像檔推播到 Docker Hub。

多容器應用程式:使用 Compose 協調

Docker Compose 允許您使用 YAML 檔案定義和管理多容器應用程式。以下是一個使用 Docker Compose 啟動應用程式的範例:

# 進入 compose-app 目錄
cd gsd-book/compose-app

# 啟動 Compose 應用程式
docker compose up --detach

# 列出容器
docker compose ps

# 檢查網路
docker network ls

# 檢查應用程式狀態
docker compose ls

內容解密:

docker compose up 命令用於啟動在 compose.yaml 檔案中定義的多容器應用程式,-d 引數表示在後台執行。docker compose ps 命令用於列出正在執行的容器,docker network ls 命令用於列出網路,docker compose ls 命令用於列出 Compose 應用程式。

邁向進階:效能調校與最佳實務

容器化技術的應用不僅限於基礎操作,更需要深入理解其進階特性和最佳實務,才能充分發揮其效能和效率。

透過本文的實戰,您已掌握了 Docker 容器化的核心技術,從容器操作、映像檔管理到多容器應用程式佈署,為構建現代化應用程式奠定了堅實基礎。

視覺化容器化架構

以下使用 Mermaid 圖表展示一個典型的多容器應用程式架構:

  graph LR
    Web[Web Server] --> App[Application Server]
    App --> DB[Database]
    App --> Cache[Cache]

內容解密:

此圖表展示了一個簡單的三層架構,Web 伺服器接收使用者請求,應用程式伺服器處理業務邏輯,並且資料函式庫和快取進行互動。

  sequenceDiagram
    participant Client
    participant Web
    participant App
    participant DB

    Client->>Web: HTTP Request
    Web->>App: Request
    App->>DB: Query
    DB-->>App: Response
    App-->>Web: Response
    Web-->>Client: HTTP Response

內容解密:

此圖表展示了客戶端、Web 伺服器、應用程式伺服器和資料函式庫之間的互動順序。

持續學習和實踐是掌握容器化技術的關鍵。探索更多進階主題,例如容器網路、儲存管理和安全最佳實務,將使您在容器化領域更加遊刃有餘。 調整 compose.yaml 檔案,進行以下變更:刪除 build: . 行,新增 image: nigelpoulton/gsd-book:banner 行。儲存變更後重新佈署應用程式。

networks:
  internal:
services:
  web:
    image: nigelpoulton/gsd-book:banner
    command: python app.py
    # ... 其他設定 ...

執行以下指令重新佈署應用程式:

docker compose up --pull always --detach

瀏覽 http://localhost:5555/ 確認變更已生效。最後,刪除應用程式和所有相關映像檔:

docker compose down --rmi all

Docker 與 AI 的整合

切換到 ai/chatbot 目錄,確認 Compose 檔案存在:

ls -l

若 Docker 主機已啟用 GPU 支援,執行以下指令啟動 chatbot:

docker compose --file gpu-compose.yaml up --detach

若無 GPU 或不確定,執行以下指令:

docker compose up --detach

網路速度慢時,啟動 chatbot 可能需要較長時間,因為 Docker 需要下載容器映像檔,Ollama 需要下載 AI 模型。檢查應用程式狀態:

docker compose ls

若 STATUS 欄顯示三個正在執行的服務,則 chatbot 已啟動並正在執行。開啟瀏覽器至 http://localhost:3000,向 chatbot 提問以確認其正常運作。

以下指令檢查模型伺服器容器上的 Ollama 設定。開啟模型伺服器容器的 shell session:

docker exec -it chatbot-ollama-1 sh

檢查 Ollama 安裝:

ollama --version

檢查 AI 模型是否存在:

ollama ls

執行 ps 指令檢視 ollama 程式:

ps -ef

檢視是否有模型正在執行:

ollama ps

完成後,輸入 exit 登出容器並傳回 shell。停止 chatbot 並清除映像檔和磁碟區:

docker compose down --volumes --rmi all

常見術語解析

以下解析 Docker 和容器相關的常見術語:

  • 容器 (Container): 一個隔離的作業系統環境,用於執行單一應用程式。對應用程式而言,容器看起來就像一個完整的作業系統。容器比虛擬機器更小、更快、更易於移植。
  • Compose: 一個用於定義、佈署和管理多容器微服務應用程式的開放規範。Docker 實作了 Compose 規範,並提供 docker compose 指令簡化 Compose 應用程式的操作。
  • 容器化 (Containerize): 將應用程式及其所有依賴項封裝到容器映像檔的過程。
  • Docker: 一個簡化容器化應用程式操作的平台。它允許構建映像檔,以及執行和管理獨立容器和多容器應用程式。
  • Docker Desktop: 適用於 Linux、Mac 和 Windows 的桌面應用程式,簡化 Docker 的使用。它具有簡潔的使用者介面和許多進階功能,例如映像檔管理、漏洞掃描和 Wasm 支援。
  • Docker Hub: 高效能與符合 OCI 規範的映像檔儲存函式庫。Docker Hub 擁有超過 57PB 的儲存空間,平均每秒處理 30,000 個請求。
  • Docker, Inc.: 一家總公司位於美國的科技公司,致力於讓開發者更輕鬆地構建、釋出和執行容器化應用程式。Docker 平台的幕後公司。
  • Dockerfile: 一個純文字檔案,包含指示 Docker 如何將應用程式及其依賴項封裝到映像檔的指令。
  • 映像檔 (Image): 包含單一應用程式、所有依賴項以及啟動應用程式為容器所需的中繼資料的檔案。
  • 微服務 (Microservices): 一種現代應用程式設計模式,其中所有應用程式功能都開發為各自的小型應用程式(微服務/容器),並透過 API 進行通訊。它們協同工作以形成一個完整的應用程式。
  • 模型 (Model): 經過預先訓練的 AI 程式,可以接受提示並提供類別似人類的回應。
  • Ollama: 一個開源的 AI 模型執行環境,允許下載 AI 模型並在本地執行,以確保所有互動保持私密性。
  • 開放容器倡議 (Open Container Initiative, OCI): 一個輕量級的治理機構,負責建立和維護低階容器技術的標準,例如映像檔、執行環境和儲存函式庫。Docker 建立符合 OCI 規範的映像檔,實作符合 OCI 規範的執行環境,而 Docker Hub 是一個符合 OCI 規範的儲存函式庫。
  • 推播 (Push): 上傳的同義詞。docker push 指令將映像檔推播到 OCI 儲存函式庫,例如 Docker Hub。ollama push 將 AI 模型推播到 AI 模型儲存函式庫。
  • 提取 (Pull): 下載的同義詞。docker pull 指令從 OCI 儲存函式庫提取映像檔,例如 Docker Hub。ollama pull 從模型儲存函式庫提取 AI 模型。
  • 儲存函式庫 (Registry): 用於儲存和檢索構件(例如容器映像檔和 AI 模型)的中心位置。

本文探討了 Docker 的核心概念、Compose 的應用、與 AI 模型的整合以及相關術語的解析。透過實際案例的操作示範,讀者可以更清晰地理解 Docker 在現代應用程式開發中的重要性,以及如何有效地利用 Docker 簡化開發流程。從構建映像檔、管理容器到佈署複雜的微服務應用程式,Docker 提供了一套完整的解決方案,讓開發者能夠更專注於業務邏輯的開發,提升開發效率。