Skip to main content

Building Docker Images

การสร้าง Docker Images

การสร้าง Docker Image เป็นกระบวนการที่สำคัญในการใช้งาน Docker เพราะ Docker Image คือรากฐานที่ใช้ในการสร้าง Docker Container ซึ่งเป็นที่ที่คุณเก็บแอปพลิเคชันและการตั้งค่าทั้งหมดเอาไว้ในรูปแบบที่สามารถใช้งานได้ทุกที่ การสร้าง Docker Image ช่วยให้คุณสามารถควบคุมการตั้งค่าและลักษณะของ container ได้อย่างเต็มที่

กระบวนการในการสร้าง Docker Image

การสร้าง Docker Image มักจะทำผ่าน Dockerfile ซึ่งเป็นไฟล์ที่บอกขั้นตอนในการสร้าง image โดยการระบุคำสั่งที่จำเป็นในการตั้งค่าระบบภายใน container

ขั้นตอนการสร้าง Docker Image ด้วย Dockerfile

  1. สร้างไฟล์ Dockerfile ในโฟลเดอร์ที่ต้องการสร้าง Docker Image
  2. เขียนคำสั่งใน Dockerfile ที่ระบุขั้นตอนในการตั้งค่าภายใน container
  3. ใช้คำสั่ง docker build เพื่อสร้าง Docker Image

ตัวอย่าง Dockerfile

# เลือก base image
FROM ubuntu:20.04

# ตั้งค่า environment variable
ENV DEBIAN_FRONTEND=noninteractive

# ติดตั้งแพ็กเกจที่จำเป็น
RUN apt-get update && apt-get install -y \
curl \
git \
vim

# คัดลอกไฟล์จากโฟลเดอร์ปัจจุบันไปยัง container
COPY . /app

# ตั้งค่า directory ที่จะใช้ภายใน container
WORKDIR /app

# รันคำสั่งที่ต้องการภายใน container
RUN make /app

# กำหนดพอร์ตที่จะเปิดให้เข้าถึง
EXPOSE 8080

# คำสั่งที่รันเมื่อ container เริ่มทำงาน
CMD ["python3", "app.py"]

ในที่นี้:

  • FROM ubuntu:20.04 : เลือก base image เป็น Ubuntu 20.04
  • RUN apt-get install -y curl git vim : ติดตั้งเครื่องมือที่จำเป็น
  • COPY . /app : คัดลอกไฟล์จากโฟลเดอร์ปัจจุบันไปยัง container
  • WORKDIR /app : ตั้งค่า directory ภายใน container
  • EXPOSE 8080 : เปิดพอร์ต 8080 ให้สามารถเข้าถึงได้จากภายนอก
  • CMD ["python3", "app.py"] : คำสั่งที่รันเมื่อ container เริ่มทำงาน

2. การสร้าง Docker Image จาก Dockerfile

หลังจากที่คุณสร้าง Dockerfile เสร็จแล้ว คุณสามารถสร้าง Docker Image ได้โดยใช้คำสั่ง docker build ดังนี้:

docker build -t my-image .

ในที่นี้:

  • -t my-image : กำหนดชื่อให้กับ Docker Image ที่จะสร้าง
  • . : ระบุว่า Dockerfile อยู่ในโฟลเดอร์ปัจจุบัน

Docker จะทำตามคำสั่งใน Dockerfile ทีละขั้นตอน ตั้งแต่การติดตั้งโปรแกรมที่จำเป็นไปจนถึงการตั้งค่า container

3. ตรวจสอบ Docker Image ที่สร้างขึ้น

หลังจากที่ Docker Image ถูกสร้างเสร็จแล้ว คุณสามารถใช้คำสั่ง docker images เพื่อดูรายการ Docker Images ที่มีอยู่ในเครื่องของคุณ:

docker images

คำสั่งนี้จะแสดงข้อมูลเกี่ยวกับ images ที่มีในเครื่อง เช่น ชื่อ image, tag, และขนาดของ image

4. การใช้ Docker Image ที่สร้างขึ้น

เมื่อสร้าง Docker Image เสร็จแล้ว คุณสามารถใช้ image นี้ในการสร้าง Docker Container ด้วยคำสั่ง docker run:

docker run -d -p 8080:80 my-image

ในที่นี้:

  • -d : รัน container ใน background
  • -p 8080:80 : ทำการแมปพอร์ตจากเครื่อง host (8080) ไปยังพอร์ตใน container (80)
  • my-image : ใช้ Docker Image ที่ชื่อว่า my-image เพื่อสร้าง container

5. การบันทึก Docker Image ลงในไฟล์

หากคุณต้องการบันทึก Docker Image ลงในไฟล์เพื่อใช้หรือส่งไปยังเครื่องอื่น สามารถใช้คำสั่ง docker save:

docker save -o my-image.tar my-image

คำสั่งนี้จะบันทึก Docker Image ที่ชื่อ my-image ลงในไฟล์ my-image.tar

6. การโหลด Docker Image จากไฟล์

หากคุณมี Docker Image ที่บันทึกเป็นไฟล์ tar และต้องการโหลดเข้ามาในเครื่องของคุณ สามารถใช้คำสั่ง docker load:

docker load -i my-image.tar

คำสั่งนี้จะโหลด Docker Image จากไฟล์ my-image.tar เข้ามาในระบบ

7. การลบ Docker Image

หากคุณไม่ต้องการใช้ Docker Image ที่มีอยู่แล้วในเครื่อง สามารถใช้คำสั่ง docker rmi เพื่อลบ Docker Image:

docker rmi my-image

คำสั่งนี้จะลบ Docker Image ที่ชื่อว่า my-image

ข้อดีของการใช้ Dockerfile ในการสร้าง Images

  • การทำงานอัตโนมัติ: Dockerfile เป็นการกำหนดขั้นตอนทั้งหมดในการสร้าง Docker Image ทำให้กระบวนการสร้าง image เป็นอัตโนมัติและไม่ต้องทำซ้ำ
  • ความสามารถในการพกพา: Docker Images สามารถแชร์และใช้งานได้ในทุกที่ที่รองรับ Docker
  • การทำงานร่วมกัน: Dockerfile สามารถแชร์ให้กับทีมเพื่อให้ทุกคนสร้าง container ที่มีลักษณะเดียวกัน

สรุป

การสร้าง Docker Images เป็นกระบวนการที่สำคัญในการใช้งาน Docker โดยคุณสามารถกำหนดขั้นตอนในการติดตั้งและตั้งค่าระบบภายใน Docker Container ได้โดยใช้ Dockerfile การใช้คำสั่ง docker build, docker save, และ docker load ช่วยให้คุณสามารถสร้าง, บันทึก, และใช้งาน Docker Images ได้อย่างสะดวก นอกจากนี้ Docker Images ยังช่วยให้คุณสามารถใช้งานแอปพลิเคชันในทุกสภาพแวดล้อมที่รองรับ Docker ได้อย่างมีประสิทธิภาพ