0Pricing
Docker & DevOps Fundamentals · บทเรียน

ทำความเข้าใจ 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 — ภาพประกอบ 1

ประโยชน์: การสร้างแบบอัตโนมัติ

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 443

Dockerfile แรกแบบง่ายของคุณ

มาประกอบทุกอย่างเข้าด้วยกัน! ต่อไปนี้คือ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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