ข้อผิดพลาด 'การอนุญาตถูกปฏิเสธ' ของนักเทียบท่า

Khx Phid Phlad Kar Xnuyat Thuk Ptiseth Khxng Nak Theiyb Tha



เมื่อทำงานกับ Docker คุณอาจพบกรณีที่คำสั่งส่งคืนข้อผิดพลาด “permission rejected” ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเรียกใช้ Docker โดยไม่มีสิทธิ์เพียงพอสำหรับคำสั่ง

นักเทียบท่าต้องการสิทธิ์ sudo หรือ root เพื่อดำเนินการคำสั่งที่เกี่ยวข้องตามค่าเริ่มต้น การพยายามเรียกใช้คำสั่งใดๆ โดยไม่มีสิทธิ์ที่จำเป็นจะทำให้เกิดข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ที่น่าอับอาย







บทช่วยสอนนี้มีวิธีการและเทคนิคต่างๆ ที่คุณสามารถใช้เพื่อแก้ไขข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ” เมื่อพยายามเรียกใช้คำสั่ง Docker



โปรดทราบว่าไม่ครอบคลุมถึงกระบวนการเรียกใช้ Docker ในสภาพแวดล้อมที่ไม่มีรูท คุณสามารถตรวจสอบบทช่วยสอนของเราเกี่ยวกับ Docker ที่ไม่มีรูทได้ในแหล่งข้อมูลต่อไปนี้:



ความต้องการ:

ตามที่คุณสามารถเดาได้ เพื่อติดตามโพสต์นี้ คุณจะต้องมีสิ่งต่อไปนี้:





    1. นักเทียบท่าเวอร์ชัน 20.0 ขึ้นไป
    2. สิทธิ์ Sudo หรือรูทบนระบบโฮสต์

ข้อผิดพลาด 'การอนุญาตถูกปฏิเสธ' คืออะไร?

เมื่อข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ” เกิดขึ้นใน Docker หมายความว่าระบบโฮสต์ไม่สามารถสร้างการสื่อสารกับ Docker daemon ได้เนื่องจากสิทธิ์ไม่เพียงพอ ตัวอย่างจะแสดงดังต่อไปนี้:

$ นักเทียบท่าวิ่ง -มัน กล่องยุ่ง



หากคุณพบข้อผิดพลาดที่ระบุ คุณสามารถใช้วิธีการต่อไปนี้เพื่อเรียนรู้วิธีแก้ไข



วิธีที่ 1: เรียกใช้ Docker ในฐานะรูท

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

ตัวอย่างเช่น เพื่อแก้ไขข้อผิดพลาดดังกล่าว เราสามารถต่อท้าย sudo ก่อนคำสั่งได้ดังนี้:

$ ซูโดะ นักเทียบท่าวิ่ง -มัน กล่องยุ่ง



อย่างที่คุณเห็น Docker ดึงรูปภาพที่ต้องการและรันคอนเทนเนอร์ได้สำเร็จ

วิธีที่ 2: รีสตาร์ท Docker Daemon

บางครั้งคุณอาจได้รับข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ใน Docker หากเครื่องยนต์มีปัญหา แทนที่จะติดตามปัญหาด้วยตนเอง คุณสามารถลองรีสตาร์ท Docker daemon อย่างรวดเร็วเพื่อโหลดซ้ำได้

เริ่มต้นด้วยการตรวจสอบสถานะของ Docker daemon ดังนี้:

$ นักเทียบท่า systemctl สถานะนักเทียบท่า



เมื่อคุณแน่ใจว่า Docker ทำงานอยู่ ให้รีสตาร์ทบริการด้วยคำสั่งต่อไปนี้:

$ ซูโดะ systemctl รีสตาร์ทนักเทียบท่า


การดำเนินการนี้ควรบูต Docker daemon และแก้ไขปัญหาที่อาจเกิดขึ้นซึ่งอาจขัดขวางไม่ให้คุณเรียกใช้คำสั่งใดๆ

วิธีที่ 3: เปิดใช้งานผู้ใช้ที่ไม่ใช่รูท

อีกวิธีหนึ่งที่คุณสามารถใช้เพื่อแก้ไขข้อผิดพลาด 'สิทธิ์ถูกปฏิเสธ' ใน Docker คือการอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทสามารถรันคำสั่ง Docker ได้

หากต้องการเปิดใช้งานวิธีนี้ ให้เข้าสู่ระบบโฮสต์และสร้างกลุ่มใหม่สำหรับ Docker

$ ซูโดะ เพิ่มกลุ่ม -ฉ นักเทียบท่า


จากนั้นเพิ่มผู้ใช้ที่คุณต้องการในกลุ่ม Docker ดังนี้:

$ ซูโดะ ผู้ใช้ mod -ก นักเทียบท่าลินุกซ์


คำสั่งก่อนหน้านี้ควรเพิ่มผู้ใช้ linuxhint ในกลุ่ม Docker

สุดท้าย ใช้การเปลี่ยนแปลงกลุ่มกับเซสชันปัจจุบันโดยใช้คำสั่งต่อไปนี้:

$ newgrp นักเทียบท่า


เมื่อเสร็จแล้ว คุณสามารถเรียกใช้คำสั่ง Docker โดยไม่ต้องใช้ sudo สำหรับผู้ใช้ในกลุ่ม Docker

วิธีที่ 4: กำหนดค่าสิทธิ์นักเทียบท่าใหม่

วิธีถัดไปที่คุณสามารถใช้ได้คือการรีเซ็ตการอนุญาตสำหรับซ็อกเก็ต Docker เริ่มต้นด้วยการเปลี่ยนความเป็นเจ้าของซ็อกเก็ต Docker Unix โดยรันคำสั่งต่อไปนี้:

$ ซูโดะ ชวน รูท: นักเทียบท่า / เคยเป็น / วิ่ง / นักเทียบท่าถุงเท้า


จากนั้น เป็นเจ้าของไดเร็กทอรี Docker ที่ซ่อนอยู่ในโฮมไดเร็กตอรี่ของคุณโดยใช้คำสั่งดังต่อไปนี้:

$ ซูโดะ ชวน -ร ' $USER ' : : ' $USER ' $บ้าน / .นักเทียบท่า


สุดท้าย กำหนดกลุ่มที่มีสิทธิ์อ่านและเขียนให้กับไดเร็กทอรีดังนี้:

$ ซูโดะ โครโมด -ร g+rw ' $บ้าน /.นักเทียบท่า'


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

บทสรุป

ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีใช้สี่วิธีหลักในการแก้ไขข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ” ของ Docker เมื่อเรียกใช้คำสั่ง Docker