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

ติดตั้ง 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 Enginedocker-ce-cliคือ command-line interface สำหรับสั่งงาน Dockercontainerd.ioคือ runtime สำหรับจัดการ containerdocker-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 ไปแล้ว ให้ตรวจสอบตามลำดับดังนี้
- ได้ logout/login ใหม่ หรือ reboot แล้วหรือยัง
- คำสั่ง
groupsแสดงคำว่าdockerหรือไม่ - Docker service ยังทำงานอยู่หรือไม่
systemctl status docker
- 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 ให้ดีก่อนนำไปใช้ในงานจริง