- 1 1. แนะนำเบื้องต้น
- 2 2. ติดตั้ง Docker บน Ubuntu
- 3 3. การใช้งาน Docker Image เบื้องต้น
- 4 4. สร้าง Custom Image ด้วย Dockerfile
- 5 5. ตั้งค่าสภาพแวดล้อมภาษาญี่ปุ่นใน Ubuntu Container
- 6 6. เทคนิคเพิ่มประสิทธิภาพและลดขนาด Docker Image
- 7 7. ตัวอย่างจริง: สร้างสภาพแวดล้อมพัฒนาแอปด้วย Ubuntu Container
- 8 8. FAQ & การแก้ปัญหา
1. แนะนำเบื้องต้น
Docker คืออะไร?
Docker เป็นแพลตฟอร์มที่ใช้เทคโนโลยีการจำลองแบบคอนเทนเนอร์ เพื่อช่วยให้นักพัฒนา สามารถสร้าง แจกจ่าย และรันแอปพลิเคชันได้อย่างมีประสิทธิภาพ แตกต่างจากเครื่องเสมือน (VM) ตรงที่คอนเทนเนอร์จะแชร์เคอร์เนลของระบบปฏิบัติการโฮสต์ ทำให้เริ่มต้นได้รวดเร็วและใช้ทรัพยากรน้อยกว่า
ข้อดีของการใช้ Docker บน Ubuntu
Ubuntu เป็นหนึ่งในลินุกซ์ดิสโทรที่เหมาะสมกับ Docker เป็นอย่างมาก โดยมีจุดเด่นดังนี้
- การรองรับอย่างเป็นทางการ: Docker รองรับ Ubuntu อย่างเป็นทางการ สามารถติดตั้งได้ง่ายผ่าน repository ของทางการ
- ระบบจัดการแพ็กเกจที่เสถียร: สามารถใช้ตัวจัดการแพ็กเกจ APT ของ Ubuntu เพื่อจัดการเวอร์ชันของ Docker ได้ง่าย
- ชุมชนขนาดใหญ่: Ubuntu มีผู้ใช้งานทั่วโลก ทำให้ค้นหาวิธีแก้ปัญหาและข้อมูลได้ง่ายเมื่อเจอปัญหา
สิ่งที่คุณจะได้เรียนรู้จากบทความนี้
บทความนี้จะอธิบายเนื้อหาต่อไปนี้อย่างเป็นลำดับ
- วิธีติดตั้ง Docker บน Ubuntu
- การใช้งาน Docker image เบื้องต้น
- สร้าง custom image ด้วย Dockerfile
- การตั้งค่าสภาพแวดล้อมภาษาญี่ปุ่นบน Ubuntu container
- เทคนิคการเพิ่มประสิทธิภาพและลดขนาด Docker image
- พัฒนาแอปพลิเคชันใน Ubuntu container
- ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
เนื้อหานี้เหมาะสำหรับทั้งมือใหม่และผู้มีประสบการณ์ สามารถนำไปประยุกต์ใช้ได้จริง
2. ติดตั้ง Docker บน Ubuntu
ติดตั้ง Docker ด้วย Official Repository
บน Ubuntu สามารถติดตั้ง Docker ได้อย่างง่ายดายด้วยการใช้ official repository เพียงทำตามขั้นตอนด้านล่างนี้
1. ลบแพ็กเกจ Docker เดิม (ถ้ามี)
Ubuntu มีแพ็กเกจ docker.io
อยู่ใน repository โดยอาจเป็นเวอร์ชันเก่า แนะนำให้ลบออกก่อน
sudo apt remove docker docker-engine docker.io containerd runc
2. ติดตั้งแพ็กเกจที่จำเป็น
ติดตั้งแพ็กเกจที่จำเป็นสำหรับการติดตั้ง Docker
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
3. เพิ่ม Official Docker Repository
เพิ่ม GPG key และตั้งค่า repository สำหรับ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. ติดตั้ง Docker
หลังจากเพิ่ม repository แล้ว ให้ติดตั้ง Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
5. ตรวจสอบการติดตั้ง
ตรวจสอบว่า Docker ติดตั้งถูกต้องหรือไม่โดยดูเวอร์ชัน
docker --version
ตั้งค่าหลังการติดตั้ง Docker
1. สตาร์ทและตั้งค่า Docker ให้เริ่มอัตโนมัติ
เริ่มต้นบริการ Docker และตั้งค่าให้รันอัตโนมัติเมื่อเปิดเครื่อง
sudo systemctl start docker
sudo systemctl enable docker
2. ให้ผู้ใช้ที่ไม่ใช่ root ใช้งาน Docker ได้
โดยปกติ Docker จะรันได้เฉพาะ root ให้เพิ่มผู้ใช้ปกติลงในกลุ่ม docker
sudo usermod -aG docker $USER
หลังตั้งค่าแล้วให้ออกจากระบบและเข้าสู่ระบบใหม่อีกครั้งเพื่อให้มีผล
3. ตรวจสอบการทำงาน
ทดสอบรันคอนเทนเนอร์ hello-world
เพื่อตรวจสอบว่าการติดตั้งสำเร็จหรือไม่
docker run hello-world
หากปรากฏข้อความ “Hello from Docker!” แสดงว่าติดตั้งสำเร็จ

3. การใช้งาน Docker Image เบื้องต้น
Docker Image คืออะไร?
Docker image คือเทมเพลตสำหรับสร้างคอนเทนเนอร์ เช่น ใช้ image ที่เป็น Ubuntu ก็จะสามารถเริ่มต้นสภาพแวดล้อม Ubuntu ได้ทันที
ดึง Ubuntu image จาก Docker Hub
Docker Hub มี image ทางการจำนวนมาก หากต้องการดึง Ubuntu image ให้ใช้คำสั่งด้านล่าง
docker pull ubuntu
การสตาร์ทและหยุดคอนเทนเนอร์
ใช้ Ubuntu image ที่ดึงมาเพื่อสตาร์ทคอนเทนเนอร์ใหม่
docker run -it ubuntu bash
คำสั่งนี้จะเปิด shell ของ Ubuntu container ให้ใช้งานได้ทันที
แสดงรายการคอนเทนเนอร์
ใช้คำสั่งนี้เพื่อแสดงคอนเทนเนอร์ที่กำลังรันอยู่
docker ps
หากต้องการดูคอนเทนเนอร์ทั้งหมด (รวมที่หยุดแล้ว) ให้เพิ่มออปชัน -a
docker ps -a
หยุดและลบคอนเทนเนอร์
หยุดคอนเทนเนอร์ที่กำลังรันด้วยคำสั่งนี้
docker stop [container ID หรือชื่อ]
หากต้องการลบคอนเทนเนอร์ที่ไม่ใช้แล้ว ให้ใช้คำสั่งนี้
docker rm [container ID หรือชื่อ]
การจัดการ Docker Image
แสดงรายการ image ที่มีในเครื่อง
docker images
หากต้องการลบ image ที่ไม่ใช้แล้ว ให้ใช้คำสั่งนี้
docker rmi [image ID]
4. สร้าง Custom Image ด้วย Dockerfile
Dockerfile คืออะไร?
Dockerfile คือไฟล์ที่ใช้กำหนดขั้นตอนการสร้าง Docker image สามารถตั้งค่าระบบหรือติดตั้งแพ็กเกจต่างๆ ได้ ทำให้สร้างสภาพแวดล้อมที่เหมือนกันสำหรับทุกเครื่อง
ไวยากรณ์พื้นฐานของ Dockerfile
Dockerfile ประกอบด้วยคำสั่งหลักๆ ดังนี้
คำสั่ง | คำอธิบาย |
---|---|
FROM | ระบุ image หลักที่ต้องการใช้ |
RUN | รันคำสั่งเพื่อสร้าง image |
COPY | คัดลอกไฟล์เข้าไปในคอนเทนเนอร์ |
WORKDIR | ตั้งค่าดิเรกทอรีการทำงาน |
CMD | คำสั่งที่จะถูกรันเมื่อ container start |
ENTRYPOINT | กำหนด entrypoint ตอน container รัน |
สร้าง Custom Image จาก Ubuntu
ทำตามขั้นตอนด้านล่างนี้เพื่อสร้าง custom Docker image ที่ใช้ Ubuntu เป็น base
1. สร้างโฟลเดอร์โปรเจกต์
สร้างไดเรกทอรีใหม่และเปลี่ยนเข้าไปในไดเรกทอรีนั้น
mkdir my-ubuntu-image
cd my-ubuntu-image
2. สร้าง Dockerfile
สร้างไฟล์ชื่อ Dockerfile
ในโฟลเดอร์ แล้วเขียนเนื้อหาต่อไปนี้
# ใช้ Ubuntu image ล่าสุด
FROM ubuntu:latest
# ข้อมูลผู้ดูแล (ใส่หรือไม่ก็ได้)
LABEL maintainer="your-email@example.com"
# อัปเดตแพ็กเกจและติดตั้งเครื่องมือพื้นฐาน
RUN apt update && apt install -y curl vim git
# ตั้งค่า workdir
WORKDIR /workspace
# รัน bash เมื่อ container start
CMD ["bash"]
3. สร้าง image จาก Dockerfile
ใช้ Dockerfile ที่สร้างไว้ในการ build image ใหม่
docker build -t my-ubuntu-image .
ใช้ -t
เพื่อกำหนดชื่อ image
4. ตรวจสอบ image
ดูรายชื่อ image ที่สร้างแล้ว
docker images
5. รันคอนเทนเนอร์จาก custom image
สร้าง container จาก image ที่เพิ่งสร้างขึ้น
docker run -it my-ubuntu-image
container นี้จะมีเครื่องมือ curl, vim เป็นต้นที่ติดตั้งไว้แล้ว
5. ตั้งค่าสภาพแวดล้อมภาษาญี่ปุ่นใน Ubuntu Container
โดยปกติ image ของ Ubuntu จะเป็นภาษาอังกฤษ หากต้องการใช้งานภาษาญี่ปุ่น ต้องตั้งค่าเพิ่มเติม
ตั้งค่า Japanese Locale
ติดตั้ง locale ภาษาญี่ปุ่นเพื่อใช้งานแสดงผลและป้อนข้อความภาษาญี่ปุ่นใน Ubuntu container
1. ติดตั้งแพ็กเกจที่จำเป็น
apt update
apt install -y language-pack-ja locales
2. ตั้งค่า locale
กำหนด locale และนำไปใช้งาน
locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8
3. นำค่าที่ตั้งไว้มาใช้
export LANG=ja_JP.UTF-8
ติดตั้งระบบป้อนภาษาญี่ปุ่น (Japanese Input)
หากต้องการพิมพ์ภาษาญี่ปุ่นในเทอร์มินัล ให้ติดตั้ง ibus-mozc
apt install -y ibus-mozc
หากใช้ GUI ให้ตั้งค่าตัวแปร environment เหล่านี้ด้วย
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ใช้งาน GUI Application ใน Docker Container
การใช้งาน GUI app ใน Docker container สามารถทำได้ผ่าน X server ของโฮสต์
ติดตั้ง X server ฝั่งโฮสต์และรัน container ด้วยคำสั่งนี้
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image
6. เทคนิคเพิ่มประสิทธิภาพและลดขนาด Docker Image
การปรับแต่งให้ Docker image มีขนาดเล็กและทำงานเร็วขึ้นจะช่วยลดเวลา boot และประหยัดพื้นที่จัดเก็บ
วิธีสร้าง image ขนาดเล็กจาก Ubuntu
ubuntu:latest
มีขนาดค่อนข้างใหญ่ ถ้าต้องการขนาดเล็กให้ใช้ ubuntu:minimal
FROM ubuntu:minimal
หรือจะใช้ Alpine Linux ซึ่งขนาดเล็กมากก็ได้
FROM alpine:latest
RUN apk add --no-cache bash curl
จะช่วยลดขนาด image ได้หลายร้อย MB
ลบไฟล์ที่ไม่จำเป็นเพื่อลดขนาด image
หลังติดตั้งแพ็กเกจ สามารถลบแคชและไฟล์ชั่วคราวเพื่อให้ image เล็กลง
RUN apt update && apt install -y curl vim && apt clean && rm -rf /var/lib/apt/lists/*
โดย rm -rf /var/lib/apt/lists/*
จะลบ list ของแพ็กเกจออก
การใช้ Multi-stage Build
ตัวอย่างเช่น ใช้คอมไพเลอร์แค่ตอน build และไม่ต้องใส่ไว้ใน image สุดท้าย
FROM ubuntu as builder
RUN apt update && apt install -y gcc
FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc
ช่วยลดขนาด image โดยไม่ต้องติดตั้งเครื่องมือพัฒนาไว้ใน image สุดท้าย
7. ตัวอย่างจริง: สร้างสภาพแวดล้อมพัฒนาแอปด้วย Ubuntu Container
ตัวอย่างนี้จะแนะนำวิธีตั้งค่าสภาพแวดล้อมพัฒนาด้วย Ubuntu container
ตั้งค่าสภาพแวดล้อมสำหรับ Python
สร้าง Dockerfile ดังนี้สำหรับพัฒนา Python บน Ubuntu
FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]
บิลด์และรันคอนเทนเนอร์ด้วย
docker build -t python-dev .
docker run -it python-dev
สภาพแวดล้อมนี้สามารถรัน python3 และพัฒนา/ทดสอบสคริปต์ได้
ตั้งค่าสภาพแวดล้อมสำหรับ Node.js
สร้าง Dockerfile สำหรับ Node.js development environment
FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]
บิลด์และรันได้เหมือนตัวอย่างก่อนหน้า
docker build -t node-dev .
docker run -it node-dev
สามารถรัน node และพัฒนา JavaScript ได้ทันที
8. FAQ & การแก้ปัญหา
การใช้งาน Docker อาจพบปัญหาต่างๆ ได้ ต่อไปนี้เป็นคำถามที่พบบ่อยพร้อมวิธีแก้ไข
ความแตกต่างระหว่าง Docker กับ Virtual Machine
- Docker: แชร์เคอร์เนลกับ OS หลัก ทำงานได้รวดเร็วและเบา
- Virtual Machine (VM): มี OS แยกเป็นของตัวเอง ใช้ทรัพยากรมากและบูตช้า
Docker เหมาะสำหรับการสร้างสภาพแวดล้อมพัฒนาและการ deploy อัตโนมัติ
การจัดเก็บข้อมูลถาวรใน Ubuntu Container
เพื่อเก็บข้อมูลไว้แม้ container จะถูกลบ ให้ใช้ volume mount
docker run -v my_data:/data ubuntu
แม้จะลบ container ข้อมูลใน my_data
ก็ยังอยู่
ข้อผิดพลาดที่พบบ่อยและวิธีแก้
1. ข้อผิดพลาด permission denied
ถ้าเจอ permission denied
ตอนใช้งาน Docker ผู้ใช้อาจยังไม่ได้อยู่ในกลุ่ม docker
เพิ่มผู้ใช้เข้ากลุ่มด้วยคำสั่งนี้
sudo usermod -aG docker $USER
หลังจากนั้นให้ออกจากระบบและเข้าสู่ระบบใหม่อีกครั้ง
2. ข้อผิดพลาด image not found
ถ้า image ถูกลบออกจาก Docker Hub ให้ระบุ tag ที่ต้องการดึง
docker pull ubuntu:22.04
กำหนดเวอร์ชันโดยตรงเพื่อให้แน่ใจว่าดึง image ที่ถูกต้อง