กลับไปหน้าบทความ
#Docker#Ubuntu#Container#DevOps#Linux

ติดตั้ง Docker บน Ubuntu และใช้งานได้โดยไม่ต้องพิมพ์ sudo

บทความนี้สรุปขั้นตอนติดตั้ง Docker Engine บน Ubuntu จาก repository ทางการของ Docker พร้อมตั้งค่าสิทธิ์ให้ผู้ใช้ปัจจุบันสามารถสั่งงาน Docker ได้โดยไม่ต้องใช้ sudo. เหมาะสำหรับผู้ใช้ Ubuntu เวอร์ชันที่ยังได้รับการสนับสนุน

30 กรกฎาคม 2569อ่านประมาณ 2 นาที

แชร์บทความ

ติดตั้ง Docker บน Ubuntu และใช้งานได้โดยไม่ต้องพิมพ์ sudo

ติดตั้ง Docker บน Ubuntu และใช้งานได้โดยไม่ต้องพิมพ์ sudo

หลายคนที่เพิ่งติดตั้ง Docker บน Ubuntu มักพบว่าทุกครั้งที่ใช้งานต้องพิมพ์คำสั่งในรูปแบบ sudo docker ps หรือ sudo docker run ... อยู่เสมอ ซึ่งแม้จะใช้งานได้ แต่ก็ไม่สะดวกในระยะยาว โดยเฉพาะเมื่อใช้ Docker บ่อยใน workflow ประจำวัน

Docker คือเครื่องมือสำหรับรันแอปพลิเคชันในรูปแบบ container ซึ่งช่วยแยกสภาพแวดล้อมของแต่ละโปรเจกต์ออกจากกันอย่างชัดเจน ทำให้ลดปัญหาแบบที่ว่า “เครื่องเรารันได้ แต่เครื่องทีมรันไม่ได้” ได้มาก

บทความนี้จะพาไปติดตั้ง Docker Engine จาก repository ทางการของ Docker บน Ubuntu และตั้งค่าให้ผู้ใช้ปัจจุบันสามารถสั่ง Docker ได้โดยไม่ต้องใช้ sudo พร้อมอธิบายข้อควรระวังที่ควรรู้ก่อนใช้งานจริง

Docker คืออะไร และทำไมถึงนิยมใช้

Docker ช่วยให้เราสามารถแพ็กแอปและ dependency ที่จำเป็นไว้ใน container ได้ ทำให้การย้ายไประหว่างเครื่องพัฒนา เครื่องทดสอบ และเครื่อง production มีความสม่ำเสมอมากขึ้น

ข้อดีหลักของ Docker ได้แก่

  • แยกสภาพแวดล้อมของแต่ละโปรเจกต์ออกจากกัน
  • ลดปัญหา dependency ชนกันในเครื่องเดียว
  • ทำให้ onboarding สมาชิกใหม่ในทีมง่ายขึ้น
  • สะดวกต่อการ deploy และทดสอบระบบ

หากเพิ่งเริ่มต้น ให้เข้าใจง่าย ๆ ว่า image คือแม่แบบสำหรับสร้าง container ส่วน container คือ instance ที่กำลังรันอยู่จริง

เตรียมระบบก่อนติดตั้ง Docker

บทความนี้เหมาะกับ Ubuntu เวอร์ชันที่ยังได้รับการสนับสนุน เช่น 22.04 หรือ 24.04 โดยเริ่มจากอัปเดตรายการแพ็กเกจก่อน

sudo apt update

จากนั้นติดตั้งเครื่องมือพื้นฐานที่จำเป็นสำหรับเพิ่ม repository อย่างปลอดภัย

sudo apt install ca-certificates curl

เพิ่ม GPG key และ Docker repository ทางการ

สร้างโฟลเดอร์สำหรับเก็บกุญแจ GPG ของ APT

sudo install -m 0755 -d /etc/apt/keyrings

ดาวน์โหลดกุญแจสำหรับยืนยันความน่าเชื่อถือของแพ็กเกจจาก Docker

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

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

ต่อไปให้เพิ่ม Docker repository เข้าไปใน APT ด้วยคำสั่งต่อไปนี้

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

คำสั่งนี้จะอ่านสถาปัตยกรรมของเครื่องและรหัสรุ่น Ubuntu โดยอัตโนมัติ ทำให้เหมาะกับเครื่องส่วนใหญ่โดยไม่ต้องแก้ค่าเอง

จากนั้นอัปเดตรายการแพ็กเกจอีกครั้ง

sudo apt update

ติดตั้ง Docker Engine และเครื่องมือหลัก

เมื่อตั้งค่า repository เรียบร้อยแล้ว ให้ติดตั้ง Docker Engine พร้อมเครื่องมือสำคัญที่นิยมใช้ร่วมกัน

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

แพ็กเกจที่ติดตั้งมีหน้าที่โดยสรุปดังนี้

  • docker-ce คือ Docker Engine
  • docker-ce-cli คือ command-line interface สำหรับสั่งงาน Docker
  • containerd.io คือ runtime สำหรับจัดการ container
  • docker-buildx-plugin ใช้สำหรับ build image ได้ยืดหยุ่นขึ้น
  • docker-compose-plugin ใช้คำสั่ง docker compose แบบใหม่

ตรวจสอบว่า Docker ทำงานแล้วหรือยัง

หลังติดตั้งเสร็จ ให้ตรวจสอบสถานะ service ของ Docker

sudo systemctl status docker

หากเห็นสถานะ active (running) แปลว่า Docker ทำงานเรียบร้อยแล้ว สามารถกด q เพื่อออกจากหน้าจอสถานะได้

หาก service ยังไม่เริ่ม ให้สั่ง

sudo systemctl start docker

และหากต้องการให้ Docker เริ่มทำงานอัตโนมัติทุกครั้งหลังเปิดเครื่อง ให้ใช้คำสั่ง

sudo systemctl enable docker

ทดสอบการติดตั้งด้วย hello-world

เพื่อยืนยันว่าการติดตั้งสมบูรณ์ ให้ลองรัน container ตัวอย่าง

sudo docker run hello-world

Docker จะดาวน์โหลด image ขนาดเล็กและสร้าง container เพื่อแสดงข้อความทดสอบ หากเห็นข้อความ Hello from Docker! ถือว่าการติดตั้งสำเร็จ

ตั้งค่าให้ใช้งาน Docker โดยไม่ต้องใช้ sudo

โดยค่าเริ่มต้น Docker socket จะอยู่ภายใต้สิทธิ์ของ root จึงทำให้ผู้ใช้ทั่วไปต้องเรียกคำสั่งผ่าน sudo แต่ Docker มี Unix group ชื่อ docker ที่เปิดสิทธิ์ให้สมาชิกของกลุ่มนี้ใช้งาน Docker ได้โดยตรง

ให้เพิ่มผู้ใช้ปัจจุบันเข้า group ดังกล่าวด้วยคำสั่ง

sudo usermod -aG docker $USER

หลังจากรันคำสั่งนี้แล้ว อย่าเพิ่งทดสอบใน Terminal เดิมทันที เพราะ session ปัจจุบันยังไม่ได้โหลดสิทธิ์ group ใหม่ วิธีที่ชัดเจนที่สุดคือ

  • logout แล้ว login ใหม่
  • หรือ reboot เครื่อง

หากต้องการทดลองใน shell ใหม่แบบชั่วคราว สามารถใช้คำสั่ง

newgrp docker

จากนั้นตรวจสอบว่า account ของคุณอยู่ใน group docker แล้วหรือยัง

groups

ถ้าเห็นคำว่า docker ในผลลัพธ์ ให้ลองใช้งานโดยไม่ต้องมี sudo

docker ps

ถ้ายังไม่มี container ใด ๆ ระบบอาจแสดงเพียงหัวตาราง ซึ่งถือเป็นผลลัพธ์ปกติ

และสามารถทดสอบอีกครั้งด้วย

docker run hello-world

ปัญหาที่พบบ่อยหลังเพิ่ม docker group

บางคนอาจยังเจอปัญหา permission denied แม้จะเพิ่ม group ไปแล้ว ให้ตรวจสอบตามลำดับดังนี้

  1. ได้ logout/login ใหม่ หรือ reboot แล้วหรือยัง
  2. คำสั่ง groups แสดงคำว่า docker หรือไม่
  3. Docker service ยังทำงานอยู่หรือไม่
systemctl status docker
  1. Docker socket มีอยู่หรือไม่
ls -l /var/run/docker.sock

หากเคยใช้ sudo docker มาก่อน แล้วพบคำเตือนเกี่ยวกับสิทธิ์ในโฟลเดอร์ ~/.docker ให้แก้ไขสิทธิ์ด้วยคำสั่งต่อไปนี้

sudo chown -R "$USER":"$USER" ~/.docker
sudo chmod -R g+rwx ~/.docker

ข้อควรระวังด้านความปลอดภัย

แม้ว่าการเพิ่มผู้ใช้เข้า group docker จะช่วยให้ใช้งานสะดวกขึ้นมาก แต่ต้องเข้าใจว่า group นี้มีสิทธิ์สูงมาก ใกล้เคียงกับการมีสิทธิ์ root บนเครื่อง

เหตุผลคือผู้ใช้ที่อยู่ใน group นี้สามารถสร้าง container ที่เข้าถึงไฟล์หรือทรัพยากรของ host ได้ ดังนั้นจึงควรระวังอย่างยิ่งในเรื่องต่อไปนี้

  • อย่าเพิ่มผู้ใช้ที่ไม่ไว้วางใจเข้า group docker
  • อย่ารัน image หรือคำสั่งจากอินเทอร์เน็ตโดยไม่ตรวจสอบ
  • ใช้งานเฉพาะ image จากแหล่งที่เชื่อถือได้

Workflow พื้นฐานหลังติดตั้งเสร็จ

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

  • สร้าง image ด้วย docker build
  • รันแอปด้วย docker run
  • ดู container ด้วย docker ps
  • ใช้งาน Docker Compose แบบใหม่ด้วย docker compose up -d

สำหรับผู้เริ่มต้น แนะนำให้ทดลองกับ hello-world ให้ผ่านก่อน จากนั้นค่อยลองรัน Nginx หรือแอปของตัวเองทีละขั้น เมื่อเข้าใจความต่างระหว่าง image และ container แล้ว การใช้งาน Docker ในโปรเจกต์จริงจะง่ายขึ้นมาก

สรุป

การติดตั้ง Docker บน Ubuntu จาก repository ทางการช่วยให้ได้แพ็กเกจที่น่าเชื่อถือและอัปเดตง่ายในระยะยาว หลังจากติดตั้งและตรวจสอบว่า service ทำงานปกติแล้ว คุณสามารถเพิ่มผู้ใช้ปัจจุบันเข้า group docker เพื่อให้สั่งงานได้โดยไม่ต้องใช้ sudo

อย่างไรก็ตาม ความสะดวกนี้มาพร้อมสิทธิ์ที่สูงมาก จึงควรใช้อย่างระมัดระวัง เลือกใช้ image จากแหล่งที่เชื่อถือได้ และเข้าใจพื้นฐานของ Docker ให้ดีก่อนนำไปใช้ในงานจริง

แหล่งอ้างอิง