เมื่อทำงานกับ Docker คุณอาจพบกรณีที่คำสั่งส่งคืนข้อผิดพลาด “permission rejected” ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเรียกใช้ Docker โดยไม่มีสิทธิ์เพียงพอสำหรับคำสั่ง
นักเทียบท่าต้องการสิทธิ์ sudo หรือ root เพื่อดำเนินการคำสั่งที่เกี่ยวข้องตามค่าเริ่มต้น การพยายามเรียกใช้คำสั่งใดๆ โดยไม่มีสิทธิ์ที่จำเป็นจะทำให้เกิดข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ที่น่าอับอาย
บทช่วยสอนนี้มีวิธีการและเทคนิคต่างๆ ที่คุณสามารถใช้เพื่อแก้ไขข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ” เมื่อพยายามเรียกใช้คำสั่ง Docker
โปรดทราบว่าไม่ครอบคลุมถึงกระบวนการเรียกใช้ Docker ในสภาพแวดล้อมที่ไม่มีรูท คุณสามารถตรวจสอบบทช่วยสอนของเราเกี่ยวกับ Docker ที่ไม่มีรูทได้ในแหล่งข้อมูลต่อไปนี้:
ความต้องการ:
ตามที่คุณสามารถเดาได้ เพื่อติดตามโพสต์นี้ คุณจะต้องมีสิ่งต่อไปนี้:
- นักเทียบท่าเวอร์ชัน 20.0 ขึ้นไป
- สิทธิ์ Sudo หรือรูทบนระบบโฮสต์
ข้อผิดพลาด 'การอนุญาตถูกปฏิเสธ' คืออะไร?
เมื่อข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ” เกิดขึ้นใน Docker หมายความว่าระบบโฮสต์ไม่สามารถสร้างการสื่อสารกับ Docker daemon ได้เนื่องจากสิทธิ์ไม่เพียงพอ ตัวอย่างจะแสดงดังต่อไปนี้:
$ นักเทียบท่าวิ่ง -มัน กล่องยุ่ง ซ
หากคุณพบข้อผิดพลาดที่ระบุ คุณสามารถใช้วิธีการต่อไปนี้เพื่อเรียนรู้วิธีแก้ไข
วิธีที่ 1: เรียกใช้ Docker ในฐานะรูท
วิธีแรกและชัดเจนที่สุดในการแก้ไขข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ของ Docker คือการใช้คำสั่ง 'sudo' หากคุณมีสิทธิ์ sudo คุณสามารถแก้ไขได้โดยการรันคำสั่งที่เกี่ยวข้องโดยใช้ sudo
ตัวอย่างเช่น เพื่อแก้ไขข้อผิดพลาดดังกล่าว เราสามารถต่อท้าย sudo ก่อนคำสั่งได้ดังนี้:
$ ซูโดะ นักเทียบท่าวิ่ง -มัน กล่องยุ่ง ซ
อย่างที่คุณเห็น Docker ดึงรูปภาพที่ต้องการและรันคอนเทนเนอร์ได้สำเร็จ
วิธีที่ 2: รีสตาร์ท Docker Daemon
บางครั้งคุณอาจได้รับข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ใน Docker หากเครื่องยนต์มีปัญหา แทนที่จะติดตามปัญหาด้วยตนเอง คุณสามารถลองรีสตาร์ท Docker daemon อย่างรวดเร็วเพื่อโหลดซ้ำได้
เริ่มต้นด้วยการตรวจสอบสถานะของ Docker daemon ดังนี้:
$ นักเทียบท่า systemctl สถานะนักเทียบท่า
เมื่อคุณแน่ใจว่า Docker ทำงานอยู่ ให้รีสตาร์ทบริการด้วยคำสั่งต่อไปนี้:
การดำเนินการนี้ควรบูต Docker daemon และแก้ไขปัญหาที่อาจเกิดขึ้นซึ่งอาจขัดขวางไม่ให้คุณเรียกใช้คำสั่งใดๆ
วิธีที่ 3: เปิดใช้งานผู้ใช้ที่ไม่ใช่รูท
อีกวิธีหนึ่งที่คุณสามารถใช้เพื่อแก้ไขข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ใน Docker คือการอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทสามารถรันคำสั่ง Docker ได้
หากต้องการเปิดใช้งานวิธีนี้ ให้เข้าสู่ระบบโฮสต์และสร้างกลุ่มใหม่สำหรับ Docker
$ ซูโดะ เพิ่มกลุ่ม -ฉ นักเทียบท่า
จากนั้นเพิ่มผู้ใช้ที่คุณต้องการในกลุ่ม Docker ดังนี้:
คำสั่งก่อนหน้านี้ควรเพิ่มผู้ใช้ linuxhint ในกลุ่ม Docker
สุดท้าย ใช้การเปลี่ยนแปลงกลุ่มกับเซสชันปัจจุบันโดยใช้คำสั่งต่อไปนี้:
$ newgrp นักเทียบท่า
เมื่อเสร็จแล้ว คุณสามารถเรียกใช้คำสั่ง Docker โดยไม่ต้องใช้ sudo สำหรับผู้ใช้ในกลุ่ม Docker
วิธีที่ 4: กำหนดค่าสิทธิ์นักเทียบท่าใหม่
วิธีถัดไปที่คุณสามารถใช้ได้คือการรีเซ็ตการอนุญาตสำหรับซ็อกเก็ต Docker เริ่มต้นด้วยการเปลี่ยนความเป็นเจ้าของซ็อกเก็ต Docker Unix โดยรันคำสั่งต่อไปนี้:
$ ซูโดะ ชวน รูท: นักเทียบท่า / เคยเป็น / วิ่ง / นักเทียบท่าถุงเท้า
จากนั้น เป็นเจ้าของไดเร็กทอรี Docker ที่ซ่อนอยู่ในโฮมไดเร็กตอรี่ของคุณโดยใช้คำสั่งดังต่อไปนี้:
สุดท้าย กำหนดกลุ่มที่มีสิทธิ์อ่านและเขียนให้กับไดเร็กทอรีดังนี้:
วิธีการที่ให้มาควรตั้งค่าการอนุญาตที่เพียงพอสำหรับไฟล์และไดเร็กทอรี Docker ที่จำเป็น
บทสรุป
ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีใช้สี่วิธีหลักในการแก้ไขข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ” ของ Docker เมื่อเรียกใช้คำสั่ง Docker