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

ประโยชน์: การสร้างแบบอัตโนมัติ
Dockerfile นำข้อดีมากมายมาสู่กระบวนการทำงานด้านการพัฒนาของคุณ:
- การทำงานอัตโนมัติ: ไม่ต้องทำขั้นตอนด้วยตนเองอีกต่อไป! Docker สร้างอิมเมจอย่างสม่ำเสมอทุกครั้ง
- การควบคุมเวอร์ชัน: Dockerfile คือโค้ด คุณจึงติดตามการเปลี่ยนแปลงด้วย Git ได้
- การสร้างซ้ำได้: ทุกคนที่มี Dockerfile สามารถสร้างอิมเมจที่เหมือนกันทุกประการได้
- ความโปร่งใส: คุณเห็นได้อย่างชัดเจนว่าภายในอิมเมจมีอะไรบ้าง
โครงสร้าง Dockerfile พื้นฐาน
Dockerfile คือรายการคำสั่งที่ทำงานตามลำดับจากบนลงล่าง คำสั่งแต่ละรายการจะสร้างเลเยอร์ใหม่ในอิมเมจ
ไวยากรณ์พื้นฐานเรียบง่าย:
INSTRUCTION argumentsความคิดเห็นเริ่มต้นด้วย # เช่นเดียวกับภาษาโปรแกรมจำนวนมาก คำสั่ง Docker ไม่แยกความแตกต่างระหว่างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่โดยธรรมเนียมจะใช้ตัวพิมพ์ใหญ่
เลือกอิมเมจพื้นฐานด้วย FROM
Dockerfile ทุกไฟล์ต้องเริ่มต้นด้วยคำสั่ง FROM ซึ่งระบุอิมเมจพื้นฐานที่อิมเมจใหม่ของคุณจะสร้างต่อยอด อิมเมจพื้นฐานนี้มักมีระบบปฏิบัติการ เช่น Alpine Linux และบางครั้งมีซอฟต์แวร์ที่ติดตั้งไว้ล่วงหน้า
ลองนึกว่าเป็นการเลือกจุดเริ่มต้น อาจเป็นผืนผ้าใบเปล่าหรือผืนผ้าใบที่มีสีพื้นฐานอยู่แล้ว
FROM alpine:latestเรียกใช้คำสั่งด้วย RUN
คำสั่ง RUN ใช้เรียกใช้คำสั่งต่าง ๆ ระหว่างกระบวนการสร้างอิมเมจ จุดนี้เป็นที่สำหรับติดตั้งแพ็กเกจ สร้างไดเรกทอรี หรือคอมไพล์โค้ด
คำสั่ง RUN แต่ละรายการจะสร้างเลเยอร์ใหม่ ดังนั้นการรวมคำสั่งด้วย && จึงช่วยลดขนาดอิมเมจได้
RUN apk update && apk add gitคำสั่งเริ่มต้นด้วย CMD
คำสั่ง CMD กำหนดคำสั่งหรืออาร์กิวเมนต์เริ่มต้นสำหรับคอนเทนเนอร์ที่กำลังทำงาน ต่างจาก RUN ตรงที่คำสั่ง CMD จะทำงานเมื่อคอนเทนเนอร์เริ่มทำงาน ไม่ใช่ระหว่างการสร้าง
หากคุณระบุคำสั่งเมื่อเรียกใช้คอนเทนเนอร์ เช่น docker run my-image ls คำสั่งนั้นจะเขียนทับคำสั่ง CMD
CMD ["echo", "Hello from container!"]เพิ่มไฟล์ด้วย COPY
คำสั่ง COPY คัดลอกไฟล์หรือไดเรกทอรีใหม่จากเครื่องโฮสต์ของคุณ ซึ่งเป็นเครื่องที่ใช้สร้างอิมเมจ ไปยังระบบไฟล์ของ Docker image ณ เส้นทางที่ระบุ
โดยทั่วไปควรเลือกใช้คำสั่งนี้มากกว่า ADD เพราะมีความโปร่งใสมากกว่าและคัดลอกเฉพาะไฟล์ภายในเครื่อง
COPY ./app /usr/src/appไดเรกทอรีทำงานและตัวแปรสภาพแวดล้อม
WORKDIR กำหนดไดเรกทอรีทำงานสำหรับคำสั่ง RUN, CMD, ENTRYPOINT, COPY และ ADD ที่อยู่ถัดจากคำสั่งนี้ ทำให้ Dockerfile ของคุณเป็นระเบียบมากขึ้น
ENV กำหนดตัวแปรสภาพแวดล้อม ตัวแปรเหล่านี้พร้อมใช้งานสำหรับคำสั่งถัดไปใน Dockerfile และคอนเทนเนอร์ที่กำลังทำงาน
WORKDIR /app
ENV PORT=8080แจ้งพอร์ตด้วย EXPOSE
คำสั่ง EXPOSE แจ้ง Docker ว่าคอนเทนเนอร์จะรับฟังพอร์ตเครือข่ายที่ระบุขณะทำงาน แต่คำสั่งนี้ไม่ได้เผยแพร่พอร์ตจริง
ให้คิดว่าเป็นเอกสารกำกับ หากต้องการให้เข้าถึงพอร์ตจากภายนอกคอนเทนเนอร์ได้จริง คุณต้องใช้แฟล็ก -p กับ docker run
EXPOSE 80
EXPOSE 443Dockerfile แรกแบบง่ายของคุณ
มาประกอบทุกอย่างเข้าด้วยกัน! ต่อไปนี้คือ Dockerfile พื้นฐานที่ตั้งค่าอิมเมจ Alpine Linux ติดตั้งแพ็กเกจ และกำหนดคำสั่งเริ่มต้น
หากต้องการสร้างอิมเมจ ให้บันทึกไฟล์นี้เป็น Dockerfile ในไดเรกทอรีว่าง จากนั้นเรียกใช้ docker build -t my-simple-app . ในเทอร์มินัล
FROM alpine:latest
LABEL maintainer="CoddyKit"
RUN apk update && apk add --no-cache bash
WORKDIR /app
CMD ["bash", "-c", "echo 'Hello from my custom Alpine image!' && sleep 3600"]แบบทดสอบคำสั่ง Dockerfile
ทดสอบความรู้ของคุณ! คำสั่งใดต่อไปนี้ทำงานระหว่างกระบวนการสร้างอิมเมจและแก้ไขเนื้อหาหรือโครงสร้างของอิมเมจโดยตรง
สรุป: พื้นฐานสำคัญของ Dockerfile
คุณก้าวหน้าไปมากในการทำความเข้าใจ Docker image! เราได้เรียนรู้ว่า Dockerfile คือไฟล์ข้อความที่มีคำสั่งสำหรับสร้างอิมเมจ และมีประโยชน์มากมาย เช่น การทำงานอัตโนมัติและการสร้างซ้ำได้
คำสั่งสำคัญที่เรียนรู้:
FROM: กำหนดอิมเมจพื้นฐานRUN: เรียกใช้คำสั่งระหว่างการสร้างCMD: กำหนดคำสั่งเริ่มต้นสำหรับคอนเทนเนอร์ที่กำลังทำงานCOPY: เพิ่มไฟล์จากโฮสต์ไปยังอิมเมจWORKDIR,ENV,EXPOSE: กำหนดค่าสภาพแวดล้อมของอิมเมจและคอนเทนเนอร์
คำถามที่พบบ่อย
บทเรียน “ทำความเข้าใจ Dockerfile” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ทำความเข้าใจ Dockerfile” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & DevOps Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ทำความเข้าใจ Dockerfile”
เรียนรู้ไวยากรณ์และคำสั่งทั่วไปใน Dockerfile เพื่อกำหนดวิธีสร้างอิมเมจ คุณปฏิบัติ Docker & DevOps Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & DevOps Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & DevOps Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ทำความเข้าใจ Dockerfile” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Docker & DevOps Fundamentals นี้ได้ไหม
ได้ บทเรียน Docker & DevOps Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำความเข้าใจ Dockerfile
- การสร้างอิมเมจ Docker แบบกำหนดเอง
- เลเยอร์อิมเมจและการเพิ่มประสิทธิภาพ
- การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง