iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
DevOps

一步步學DevOps:30天入門計劃系列 第 17

Day 17 如何使用 Dockerfile 建立 image

  • 分享至 

  • xImage
  •  

Dockerfile 可用於定義如何建立 image,使用文字檔定義建立image所需的配置,包括指定基礎映像,通常使用官方的基礎映像作為自定image的基礎映像,和使用建立好的image啟動容器時的自動執行命令、軟體安裝、檔案複製、環境變數設定等等。

使用Dockerfile 建立容器步驟如下:

步驟一:準備環境

在開始之前,確認系統己安裝 Docker並正在運行中

網址:https://docs.docker.com/engine/install/ubuntu/

快速安裝:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

確認Docker 運行狀態(Active running):

sudo systemctl status docker 
sudo systemctl enable docker 
sudo systemctl restart docker

步驟二:編寫 Dockerfile

  1. 建立一個新的目錄,在這個目錄中建立一個名為 "Dockerfile"(無副檔名)旳文件檔。目錄中除了Dockerfile,並將建立容器時要執行命令的其他必要的應用程式(.py或.sh)存放在同一目錄中。
mkdir my-image-project
cd my-image-project
  1. 建立 Dockerfile:在上一步驟建立的目錄中使用您喜歡的文字編輯器(如 nano、vi/vim 或 vscode)建立一個Dockerfile 檔案。

以下是一個簡單的Dockerfile範例:

# 使用基本映像
FROM ubuntu:20.04

# 安裝必要的軟體
RUN apt-get update && apt-get install -y \    
    python3-pip

# 複製應用程式到容器中
COPY . /app

# 設定工作目錄
WORKDIR /app

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

步驟三:建立 Docker image

在 Dockerfile所在目錄中使用docker build指令,根據Dockerfile文件中的定義建立自己的 image。

docker build -t my-image .

這個命令表示使用當前目錄中的 Dockerfile 來建立映像。Docker 會在這個目錄中找到Dockerfile,然後根據 Dockerfile 的內容建立image。

  • -t 選項是用來指定image的名稱標籤的。

  • ' . '最後的句點表示Dockerfile 所在的當前目錄。

  • 可以使用docker history指令查看建立image的歷程

sudo docker images #image list

sudo docker history my-image

https://ithelp.ithome.com.tw/upload/images/20231004/20139800GcKWUG4pwS.png

步驟四:使用己建立好的image執行容器

用docker run 命令,指定己建好的image運行容器。

docker run -d --name my-container my-image

這個命令會根據之前建立的 Docker image 建立一個新的container,並且在背景執行。

Dockerfile常用指令應用說明

  • FROM:選擇基礎映像 (Base Image)

指定基礎映像,通常會選擇一個官方的基礎映像作為自定image的基礎映像,例如這裡指定Alpine Linux作為基礎映像。

FROM alpine:3.14
  • WORKDIR:定義工作目錄

在容器中定義工作目錄,這是容器中執行指令的預設目錄。例如:

WORKDIR /app
  • COPY:複製文件到容器

將本地文件複製到容器中,包括應用程式碼、配置文件等。

COPY . /app
  • RUN:執行安裝和設定命令

指定在容器中執行命令或安裝應用程式時所需要的軟體。例如:

RUN apt-get update && apt-get install -y python3
  • CMD:容器啟動時,自動執行的命令

CMD 中指定要在容器啟動時執行的命令,這是應用程式的入口點。
這裡指定用python3執行app.py程式。

CMD ["python3", "app.py"]

範例:使用Alpine Linux image,執行一個簡單的Shell script程式。

步驟 1:在存放 Dockerfile的目錄中,建立一個Shell script(script.sh)

#!/bin/bash
echo "Hello, Docker!"

步驟 2:建立Dockerfile

# 使用Alpine Linux基礎映像
FROM alpine:3.14

# 將本地的script.sh複製到容器中的/app目錄
COPY script.sh /app/

# 指定工作目錄為/app
WORKDIR /app

# 設置Shell文件的執行權限
RUN chmod +x script.sh

# 執行Shell程式
CMD ["./script.sh"]

步驟 3:建立和執行容器

docker build -t my-shell-app .
docker run my-shell-app

上一篇
Day 16 Container Network和Volume 簡述
下一篇
Day 18 Docker Compose 容器化應用程式管理
系列文
一步步學DevOps:30天入門計劃30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言