閱讀 Dockerfile 與執行容器

Containerization 與 Virtualization 概念

Julia Ostheimer

Freelance AI Consultant

Docker 術語複習

 

從 Dockerfile 到 Docker 容器

Containerization 與 Virtualization 概念

Docker 指令(instructions)與 Docker 指令(commands)

  • Docker 指令(instructions)描述如何建置 Docker 映像檔

Dockerfile 中的 Docker 指令

  • Docker 指令(commands):透過命令列介面(CLI)執行的指令

CLI 中的 Docker 指令

Containerization 與 Virtualization 概念

Dockerfile 的格式

 

Dockerfile - 註解

Containerization 與 Virtualization 概念

Dockerfile 的格式

 

Dockerfile - 指令

Containerization 與 Virtualization 概念

Dockerfile 的格式

 

Dockerfile - Docker 指令的命令

Containerization 與 Virtualization 概念

Dockerfile 的格式

 

Dockerfile - Docker 指令的參數

Containerization 與 Virtualization 概念

Dockerfile 的順序執行

  • 依序執行
  • Dockerfile 開頭:
    • 中繼資料
    • 註解
    • 參數
    • FROM 指令
Containerization 與 Virtualization 概念

Docker 指令總覽

  • 常用 Docker 指令
    • FROM
    • COPY
    • RUN
    • ENTRYPOINT
Containerization 與 Virtualization 概念

`FROM` 指令

  • 指定現有 Docker 映像檔
  • 定義要繼承的基底映像檔
    • 「起點」  

Syntax:

FROM <name_of_image>

Example:

# Define the image on which to build
FROM python:3.10
Containerization 與 Virtualization 概念

`COPY` 指令

  • 複製檔案或目錄
    • 從來源(<source>)到目的地(<destination>)
    • 供後續 Docker 指令使用的檔案  

Syntax:

COPY <source> <destination>

Example:

# Copy files/folders to the main folder of the container
COPY . .
Containerization 與 Virtualization 概念

`RUN` 指令

  • 在容器內執行命令
    • 任何可在 CLI 執行的命令

 

Syntax:

RUN <command>

Example:

# Install the application's dependencies
RUN pip install -r requirements.txt
Containerization 與 Virtualization 概念

`ENTRYPOINT` 指令

  • 定義容器的預設行為
    • 指定啟動時要執行的命令
    • 容器的主要用途  

Syntax:

ENTRYPOINT ["command", "argument"]

Example:

# Run the script when the container starts
ENTRYPOINT ["python", "hello_world.py"]
Containerization 與 Virtualization 概念

組合指令成 Dockerfile

# Define the image on which to build
FROM python:3.10
Containerization 與 Virtualization 概念

組合指令成 Dockerfile

# Define the image on which to build
FROM python:3.10

# Copy files/folders to the main folder of the container
COPY . .
Containerization 與 Virtualization 概念

組合指令成 Dockerfile

# Define the image on which to build
FROM python:3.10

# Copy files/folders to the main folder of the container
COPY . .

# Install the application's dependencies
RUN pip install -r requirements.txt
Containerization 與 Virtualization 概念

組合指令成 Dockerfile

# Define the image on which to build
FROM python:3.10

# Copy files/folders to the main folder of the container
COPY . .

# Install the application's dependencies
RUN pip install -r requirements.txt

# Run the script when the container starts
ENTRYPOINT ["python", "hello_world.py"]
Containerization 與 Virtualization 概念

docker build 指令

  • 由 Dockerfile 建置 Docker 映像檔
    • Dockerfile 需位於建置情境(<context>)中
    • 透過 Docker 用戶端在 CLI 執行指令

 

Syntax:

docker build <context>
Containerization 與 Virtualization 概念

docker run 指令

  • 從 Docker 映像檔建立並執行 Docker 容器
    • 需以參數指定映像檔(<name_of_image>)
    • 透過 Docker 用戶端在 CLI 執行指令

 

Syntax:

docker run <name_of_image>
Containerization 與 Virtualization 概念

一起來練習吧!

Containerization 與 Virtualization 概念

Preparing Video For Download...