0Pricing
DevOps Bootcamp · บทเรียน

การสร้างอิมเมจ Docker แบบกำหนดเอง

สร้างอิมเมจ Docker แบบกำหนดเองแรกสำหรับแอปพลิเคชันอย่างง่าย พร้อมติดแท็กและกำหนดเวอร์ชันอย่างถูกต้อง

การสร้างอิมเมจ Docker แบบกำหนดเอง เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

สร้าง Docker image แรกของคุณ

เหตุใดจึงควรสร้างอิมเมจแบบกำหนดเอง อิมเมจเหล่านี้ช่วยให้คุณจัดแพ็กเกจแอปเฉพาะของคุณ การพึ่งพา และการกำหนดค่าไว้ในหน่วยแบบพกพาเดียว ซึ่งเป็นหัวใจสำคัญของความสม่ำเสมอและการนำไปใช้งานที่ง่าย

คุณกำหนดวิธีสร้างอิมเมจนี้โดยใช้ไฟล์ที่เรียกว่า Dockerfile

การสร้างอิมเมจ Docker แบบกำหนดเอง — ภาพประกอบ 1

เว็บแอปแบบง่ายของเรา

เราจะใส่เว็บแอป Python Flask แบบง่ายมากลงในคอนเทนเนอร์ เมื่อคุณเข้าที่อยู่เว็บของแอป แอปจะส่งกลับข้อความ "Hello from Docker!" เท่านั้น

สมมติว่าในไดเรกทอรีมีไฟล์เหล่านี้:

  • app.py: โค้ดแอปพลิเคชัน Python
  • requirements.txt: รายการการพึ่งพาของ Python
  • Dockerfile: คำสั่งสำหรับสร้างอิมเมจ

โค้ดแอปพลิเคชัน Flask

นี่คือแอป Flask พื้นฐานที่เขียนด้วย Python ของเรา แอปจะรอรับการเชื่อมต่อที่พอร์ต 5000 และตอบกลับด้วย "Hello from Docker!"

คุณสามารถเรียกใช้แอปนี้ในเครื่องของคุณได้ (หลังจากติดตั้ง Flask แล้ว) เพื่อดูการทำงานจริง

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello from Docker!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

การระบุสิ่งที่ต้องพึ่งพา

แอปของเราต้องใช้ไลบรารี Flask เราระบุไลบรารีนี้ไว้ใน requirements.txt ไฟล์นี้จะบอกด็อกเกอร์ (และตัวจัดการแพ็กเกจของ Python อย่าง pip) ว่าต้องติดตั้งอะไรบ้าง

วิธีนี้ช่วยให้แน่ใจว่าอิมเมจของเรามีไลบรารีที่จำเป็นทั้งหมดเพื่อให้แอปทำงานได้

Flask==2.3.2

ส่วนประกอบของ Dockerfile

Dockerfile คือไฟล์ข้อความที่มีคำสั่งสำหรับสร้างอิมเมจ คำสั่งแต่ละรายการจะสร้างเลเยอร์หนึ่งขึ้นมา คำสั่งที่เราจะใช้มีดังนี้:

  • FROM: ระบุอิมเมจพื้นฐาน (เช่น Python)
  • WORKDIR: กำหนดไดเรกทอรีทำงานภายในคอนเทนเนอร์
  • COPY: คัดลอกไฟล์จากเครื่องของคุณเข้าไปในอิมเมจ
  • RUN: เรียกใช้คำสั่ง (เช่น ติดตั้งสิ่งที่ต้องพึ่งพา)
  • EXPOSE: แจ้งให้ด็อกเกอร์ทราบว่าคอนเทนเนอร์รอรับการเชื่อมต่อที่พอร์ตใด
  • CMD: กำหนดคำสั่งเริ่มต้นที่จะเรียกใช้เมื่อคอนเทนเนอร์เริ่มทำงาน

การสร้าง Dockerfile

นี่คือ Dockerfile ฉบับสมบูรณ์สำหรับแอป Flask ของเรา ให้วางไฟล์นี้ไว้ในไดเรกทอรีเดียวกับ app.py และ requirements.txt

# Use an official Python runtime as a parent image
FROM python:3.9-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY requirements.txt .
COPY app.py .

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 5000 available to the world outside this container
EXPOSE 5000

# Run app.py when the container launches
CMD ["python", "app.py"]

คำสั่ง `docker build`

ตอนนี้มาสร้างอิมเมจของเรากัน เปิดเทอร์มินัลในไดเรกทอรีที่มี Dockerfile และไฟล์แอปของคุณอยู่

แฟล็ก -t จะกำหนดแท็กให้กับอิมเมจของเราด้วยชื่อ (my-flask-app) และเวอร์ชัน (1.0) ส่วน . จะบอกด็อกเกอร์ให้ใช้ไดเรกทอรีปัจจุบันเป็นบริบทการสร้าง

docker build -t my-flask-app:1.0 .

การตรวจสอบอิมเมจใหม่ของคุณ

หลังจากการสร้างเสร็จสมบูรณ์ คุณสามารถตรวจสอบได้ว่าอิมเมจใหม่มีอยู่จริง โดยแสดงรายการอิมเมจด็อกเกอร์ทั้งหมดในเครื่อง

ให้มองหา my-flask-app ที่มีแท็ก 1.0 ในผลลัพธ์

docker images

การเปิดใช้คอนเทนเนอร์แอปของคุณ

ได้เวลาลองดูแอปของคุณทำงานแล้ว ใช้ docker run เพื่อสร้างและเริ่มต้นคอนเทนเนอร์จากอิมเมจของคุณ

-p 5000:5000 จะแมปพอร์ต 5000 บนเครื่องโฮสต์ของคุณกับพอร์ต 5000 ภายในคอนเทนเนอร์ ส่วน -d จะเรียกใช้คอนเทนเนอร์ในโหมดแยกการทำงาน (ทำงานอยู่เบื้องหลัง)

docker run -d -p 5000:5000 my-flask-app:1.0

เปิด http://localhost:5000 ในเบราว์เซอร์เพื่อดูข้อความ "Hello from Docker!"

แนวทางปฏิบัติที่ดีในการติดแท็กอิมเมจ

แท็กมีความสำคัญอย่างยิ่งต่อการจัดการอิมเมจเวอร์ชันต่าง ๆ แนวทางทั่วไปคือใช้การกำหนดเวอร์ชันเชิงความหมาย (เช่น 1.0.0, 2.1.5) และใช้แท็ก latest ด้วย

คุณสามารถเพิ่มแท็กหลายรายการให้กับอิมเมจได้โดยใช้ docker tag:

docker tag my-flask-app:1.0 my-flask-app:latest

วิธีนี้ทำให้คุณอ้างถึงอิมเมจเดียวกันด้วยชื่อต่างกันได้ จึงมีความยืดหยุ่นในการนำไปใช้งาน

ตรวจสอบความเข้าใจอย่างรวดเร็ว

พิจารณา Dockerfile และคำสั่งสร้างต่อไปนี้:

# Dockerfile content
FROM alpine:latest
WORKDIR /app
COPY . .
CMD ["echo", "Hello"]

docker build -t my-app:v1 .

ข้อใดต่อไปนี้เป็นข้อความที่เป็น TRUE เกี่ยวกับคำสั่ง docker build -t my-app:v1 .

สรุป: อิมเมจแบบกำหนดเอง

เก่งมาก คุณได้เรียนรู้วิธี:

  • เตรียมแอปพลิเคชันอย่างง่ายสำหรับการนำไปใช้ในคอนเทนเนอร์
  • เขียน Dockerfile พื้นฐานโดยใช้คำสั่งสำคัญ (FROM, WORKDIR, COPY, RUN, EXPOSE, CMD)
  • สร้างอิมเมจด็อกเกอร์แบบกำหนดเองโดยใช้ docker build -t
  • ตรวจสอบอิมเมจของคุณด้วย docker images
  • เรียกใช้คอนเทนเนอร์จากอิมเมจแบบกำหนดเองด้วย docker run -p
  • เข้าใจความสำคัญของการติดแท็กและกำหนดเวอร์ชันให้อิมเมจ

บทถัดไป เราจะลงลึกเกี่ยวกับโครงสร้างของอิมเมจด็อกเกอร์ด้วยเลเยอร์ รวมถึงเทคนิคเพิ่มประสิทธิภาพขนาดและเวลาสร้างอิมเมจ

คำถามที่พบบ่อย

บทเรียน “การสร้างอิมเมจ Docker แบบกำหนดเอง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างอิมเมจ Docker แบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างอิมเมจ Docker แบบกำหนดเอง”

สร้างอิมเมจ Docker แบบกำหนดเองแรกสำหรับแอปพลิเคชันอย่างง่าย พร้อมติดแท็กและกำหนดเวอร์ชันอย่างถูกต้อง คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างอิมเมจ Docker แบบกำหนดเอง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทำความเข้าใจ Dockerfile
  2. การสร้างอิมเมจ Docker แบบกำหนดเอง
  3. เลเยอร์อิมเมจและการเพิ่มประสิทธิภาพ
  4. การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง
← กลับไปที่ DevOps Bootcamp