CodeGym /Adesua ahorow /Docker SELF /認識 Docker Images

認識 Docker Images

Docker SELF
等級 13 , 課堂 0
開放

1.1 Docker Images 基礎

Docker Images (Docker 映像檔) 是用於 Docker 容器的模板。它們包含運行應用程式所需的一切:代碼、庫、依賴項、工具及配置文件。了解什麼是 Docker Images,以及它們的結構如何,對於有效利用 Docker 非常重要。

Docker Image 是一個 不可變 的模板,用來創建容器。它包含應用在隔離環境中運行所需的一切組件。當你啟動一個容器時,Docker 創建一個映像檔的實例並啟動它。

Docker Images 的關鍵特性:

  1. 不可變性: Docker 映像檔是不可變的。對容器中的任何更改都不會影響原始映像檔。要更改映像檔的內容,必須創建新的映像檔。
  2. 分層結構: Docker Images 由多個層組成。每一層都是相較於前一層的更改。這使得可以通過重複利用層來有效地使用空間。
  3. 唯一標識: 每個映像檔都有一個唯一的標識符 (SHA256-hash),還可以有一個或多個標籤(tag),這讓管理映像檔版本變得更容易。

Docker Images 的結構:

Docker Images 擁有分層結構,每一層都是檔案系統。這些層存儲在 Docker 的快取中,並且可以被其他映像檔重複使用。分層結構使得 Docker 映像檔變得輕量且高效。例如,第一層是操作系統,第二層是 Python,第三層是你的應用程式。

Docker Images 結構的主要組成部分:

  1. 基礎層 (Base Layer): 映像檔的初始層,通常作為創建其他映像檔的基礎。例如,這可能是像 Ubuntu 或 Alpine Linux 這樣的最小版本的操作系統。
  2. 中間層 (Intermediate Layers): 這些層是基於在 Dockerfile 中執行的指令創建的(例如,安裝套件、複製文件等)。每一層都為前一層添加更改。
  3. 最終層 (Final Layer): 基於 CMD、ENTRYPOINT 指令或容器內的更改創建的最後一層稱為 "容器層"。這一層是臨時的,只在容器運行期間存在。

1.2 Docker Images 的層是如何運作的

每一層的 Docker Image 就是相較於前一層的改變集合。當 Docker 建立 Image 時,它會執行 Dockerfile 中的每條指令,並為每個改變新增一個新層。

建立層的範例:

  1. 基礎 Image:我們從一個基礎 Image 開始,例如 ubuntu:20.04。這會是第一層。
  2. 安裝套件:指令 RUN apt-get update && apt-get install -y python3 會建立一個安裝好 Python 的新層。
  3. 複製檔案:指令 COPY . /app 會新增一層,將應用程式的檔案加入進來。
  4. 設定工作目錄:指令 WORKDIR /app 會新增一層,設定接下來指令的工作目錄。

使用層的好處:

  1. 重複使用:層可以被其他的 Image 重複使用。例如,如果兩個 Image 使用同一個基礎層,Docker 只會下載一次,節省空間和時間。
  2. 快取功能:Docker 會快取層,這能加速建立 Image 的過程。如果層沒有改變,Docker 會直接從快取使用,而不是重新建立。
  3. 模組化:層狀結構讓 Image 的開發變得模組化。你可以更新或更改單獨的層,而不需要影響整個 Image。

Docker Images 的識別與標籤:

每一個 Docker Image 都會有一個獨特的哈希值 (SHA256),這是根據 Image 的內容與所有層生成的。為了更方便管理與版本控制,Docker Images 還可以帶有標籤 (tags)。

Image 識別的範例:

以下指令會顯示系統中所有的 Image,包括它們的 repository、標籤、ID 和大小:

Terminal

docker images

1.3 使用 Docker Images

Docker 提供了很多操作映像的指令。以下是主要的幾個:

  • 創建映像: docker build
  • 從映像啟動容器: docker run
  • 列出所有映像: docker images
  • 刪除映像: docker rmi
  • 在 Docker Hub 搜尋映像: docker search
  • 從 Docker Hub 拉取映像: docker pull
  • 推送映像到 Docker Hub: docker push

創建及使用 Docker Image 的範例:

1. 創建 Dockerfile:

dockerfile

# 使用基礎映像 Ubuntu
FROM ubuntu:20.04

# 安裝 Python
RUN apt-get update && apt-get install -y python3

# 將應用程序文件複製到容器中
COPY . /app

# 設置工作目錄
WORKDIR /app

# 指定應用程序啟動指令
CMD ["python3", "app.py"]

2. 編譯映像:

以下指令將使用目前目錄中的 Dockerfile 創建一個名為 my_python_app 的映像:

Terminal

docker build -t my_python_app .

3. 從映像啟動容器:

使用以下指令從創建的映像 my_python_app 啟動一個後台模式的容器:

Terminal

docker run -d my_python_app
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION