ข้อผิดพลาด “permission denied while trying to connect to the Docker daemon socket” เกิดจากการที่ผู้ใช้ไม่มีสิทธิ์เพียงพอที่จะเข้าถึง Docker daemon ซึ่งโดยปกติจะต้องรันคำสั่ง Docker ด้วยสิทธิ์ root
หรือเป็นสมาชิกของกลุ่ม docker
เพื่อเข้าถึงไฟล์ socket (/var/run/docker.sock
) ของ Docker daemon
วิธีแก้ไข
1. รันคำสั่ง Docker ด้วย sudo
ลองเพิ่ม sudo
หน้าคำสั่ง Docker:
bashCopy codesudo docker ps
หากทำงานได้ แสดงว่าปัญหาเกิดจากสิทธิ์การเข้าถึงของผู้ใช้
2. เพิ่มผู้ใช้ในกลุ่ม docker
หากคุณไม่ต้องการใช้ sudo
ทุกครั้ง สามารถเพิ่มผู้ใช้ในกลุ่ม docker
ได้:
bashCopy codesudo usermod -aG docker $USER
จากนั้นออกจากระบบและเข้าสู่ระบบใหม่ (หรือใช้คำสั่ง newgrp docker
) เพื่อให้การเปลี่ยนแปลงมีผล:
bashCopy codenewgrp docker
docker ps
3. ตรวจสอบสิทธิ์ของไฟล์ socket
ตรวจสอบสิทธิ์ของไฟล์ socket /var/run/docker.sock
:
bashCopy codels -l /var/run/docker.sock
ไฟล์นี้ควรมีสิทธิ์ให้ผู้ใช้ในกลุ่ม docker
สามารถเข้าถึงได้ เช่น:
bashCopy codesrw-rw---- 1 root docker 0 Jan 2 12:00 /var/run/docker.sock
หากกลุ่มไม่ใช่ docker
หรือไม่มีสิทธิ์ที่เหมาะสม คุณสามารถปรับสิทธิ์ได้:
bashCopy codesudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
4. ตรวจสอบว่า Docker daemon ทำงานอยู่
ตรวจสอบสถานะของ Docker daemon:
bashCopy codesudo systemctl status docker
หาก Docker daemon ไม่ได้ทำงาน ให้เริ่มต้นด้วยคำสั่ง:
bashCopy codesudo systemctl start docker
5. ตรวจสอบว่า Docker ติดตั้งถูกต้อง
หากยังไม่ได้ติดตั้ง Docker อย่างถูกต้องหรือครบถ้วน ให้ติดตั้งหรืออัปเดต Docker:
bashCopy codesudo apt update
sudo apt install docker.io
sudo systemctl enable docker
sudo systemctl start docker
6. สำหรับ WSL (Windows Subsystem for Linux)
หากใช้ Docker บน WSL และเกิดปัญหานี้:
- ตรวจสอบว่า WSL เชื่อมต่อกับ Docker Desktop ใน Windows หรือไม่
- ตรวจสอบการตั้งค่า integration ใน Docker Desktop และเปิดใช้งานสำหรับ WSL Distro ที่ต้องการ
การตรวจสอบเพิ่มเติม
หากปัญหายังคงอยู่:
- ตรวจสอบว่า Docker socket (
/var/run/docker.sock
) มีปัญหาหรือไม่ - เช็ค Docker logs เพื่อหาข้อผิดพลาด:bashCopy code
sudo journalctl -u docker
แจ้งเพิ่มเติมได้หากคุณต้องการคำแนะนำเพิ่มเติม!