CodeGym /Adesua ahorow /Docker SELF /選擇基礎映像

選擇基礎映像

Docker SELF
等級 14 , 課堂 1
開放

7.1 基礎映像檔

基礎映像檔在建立 Docker 映像檔中扮演著重要角色,因為它們提供了構建的起點並定義了您的應用程式將執行的環境。正確選擇和配置基礎映像檔可以顯著影響最終映像檔的效能、大小和安全性。在這次講座中,我們將探討如何選擇和配置 Docker 的基礎映像檔。

基礎映像檔(或基礎映像) 是指用於作為新 Docker 映像檔初始層的 Docker 映像檔。它可以包含一個最小的作業系統、必要的工具和庫,甚至可以是空的 (scratch 映像檔)。基礎映像檔的選擇決定了您的容器中預設可用的資源和套件。

選擇基礎映像檔

在選擇基礎映像檔時需要考慮幾個因素:

  1. 映像檔大小: 較小的映像檔下載速度更快,占用的磁碟空間更少,並能加速應用程式的部署。
  2. 支援與更新: 使用具有定期更新的官方映像檔,可確保更高的安全性、漏洞修復和穩定運行。
  3. 相容性: 基礎映像檔應包含您的應用程式正確運行所需的庫和依賴項。

常見的基礎映像檔

1. Alpine Linux

這是一個非常輕量級的映像檔,僅佔約 5 MB 空間。它非常適合需要最小作業系統的應用程式。然而,開發者需要注意的是,Alpine 缺少許多標準庫,因此某些應用程式可能需要額外的配置。

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

這些是更多功能齊全的映像檔,包含廣泛的工具和庫。它們適合需要更加完整環境或熟悉的 Linux 標準庫的複雜應用程式。

dockerfile

FROM ubuntu:20.04 

3. 官方語言映像檔

為程式語言(例如 Node.js、Python、Ruby 等)提供的官方映像檔。這些映像檔已內建相應語言的開發和運行環境,簡化了配置工作。

dockerfile

FROM node:14 

7.2 配置基礎映像檔

選擇基礎映像檔之後,需要根據你的應用需求進行配置。配置包括安裝必要的套件、複製應用程式文件以及設置環境。

範例: 基於 Alpine Linux 的基礎映像檔配置

dockerfile


# 使用基礎映像檔 Alpine Linux
FROM alpine:3.12
        
# 安裝必要的套件
RUN apk add --no-cache python3 py3-pip
        
# 設置工作目錄
WORKDIR /app
        
# 複製應用程式文件
COPY . .
        
# 安裝依賴項
RUN pip3 install -r requirements.txt
        
# 指定啟動應用程式的指令
CMD ["python3", "app.py"]

在這個範例中,使用了基礎映像檔 alpine:3.12,安裝了必要的套件,複製了應用程式文件並安裝了依賴項。最終指令 alpine:3.12 指定了如何啟動應用程式。

範例: 基於 Ubuntu 的基礎映像檔配置

dockerfile


# 使用基礎映像檔 Ubuntu
FROM ubuntu:20.04
        
# 更新並安裝必要的套件
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# 設置工作目錄
WORKDIR /app
        
# 複製應用程式文件
COPY . .
        
# 安裝依賴項
RUN pip3 install -r requirements.txt
        
# 指定啟動應用程式的指令
CMD ["python3", "app.py"] 

這個 Dockerfile 使用映像檔 ubuntu:20.04 並安裝了 Python 和 pip。然後它複製了應用程式文件並安裝了依賴項,與上一個範例類似。

7.3 最佳實踐

如何正確選擇和設定基礎映像檔:

1. 選擇最小的映像檔:從最小的映像檔開始,這些映像檔應能滿足你的應用需求。這樣可以減少最終映像檔的大小並提高安全性。

2. 不要安裝多餘的套件:只安裝應用真正需要的依賴項。這樣可以減小映像檔的大小並降低潛在的漏洞數量。

3. 清理套件管理器的快取:安裝套件後刪除臨時檔案和快取,以減小映像檔的大小。

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. 使用多階段構建:它可以將構建階段和執行階段分開,幫助創建更輕量化且安全的映像檔。

Terminal

        
# 構建階段
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# 最終階段
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. 定期更新映像檔:使用最新版本的基礎映像檔,以包含最新的安全修復和更新。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION