הפעלת אפליקציות עם Docker כחלק מהיומיום עשויה להפוך לסיוט כאשר אתה נתקל בשגיאה כגון אישור גישה נדחה של Docker בעת ניסיון להתחבר. אך אל תדאג, מאמר זה יעזור לך לחזור לתפקוד במהירות.
במדריך זה, תלמד דרכים רבות לפתור את ההודעת שגיאת אישור הגישה הנרדם של Docker.
דרישות מראש
מדריך זה כולל הדגמות מעשיות. כדי לעקוב, הקפד לוודא שיש לך את הבאים במקום:
- הדגמות במדריך זה רצות על Ubuntu 20.04, אך הפצות Linux אחרות גם יעבדו.
- מנוע Docker, עם גרסת המדריך 20.10.8, בנייה 3967b7d.
הרצת פקודות Docker מוגברות
גורמים רבים עשויים להביא לשגיאת אישור גישה נדחית במהלך התחברות ל-Docker. אחד מהם הוא שייתכן כי אתה מריץ פקודות Docker בלי לקודם להם את הפקודה sudo
. פקודת ה-sudo
היא אשר נותנת לך זכויות מנהל מוגברות יחד עם פריבילגיות אבטחה בעת הרצת פקודות.
למטה, תוכל לראות את השגיאת אישור הגישה הנרדם עשויה ניסיון להריץ פקודת docker
.

הפעל את הטרמינל שלך והוסף בתחילתו sudo
לפקודת ה-docker
למטה כדי להריץ
את תמונת ה-Docker hello-world
. מכיוון שאתה מריץ פקודה מוגברת, תצטרך להזין את הסיסמה שלך כדי להמשיך.
תראה פלט דומה לזה שמוצג למטה שמצביע על כך ש-Docker מותקן כראוי.

הפעלה מחדש של מנוע ה-Docker
אם הרצת פקודות Docker מוגברות לא פותרת את השגיאה אין הרשאה, אמת שה-Docker Engine שלך פועל. בדומה להרצת פקודת docker
בלי הפקודה sudo
, מנוע Docker שנעצר מפעיל את שגיאת אין הרשאה. איך אתה מתקן את השגיאה? על ידי הפעלה מחדש של מנוע ה-Docker שלך.
הרץ את פקודת ה-systemctl
למטה כדי לאמת את מצבו של מנוע ה-Docker (status docker
) ואם הוא פועל.
למטה, אתה יכול לזהות שמנוע ה-Docker פועל מהסטטוס המוחזר שמראה פעיל (מריץ).

אם מנוע ה-Docker אינו פעיל, הרץ את פקודת ה-systemctl
למטה כדי להפעיל את מנוע ה-Docker (start docker
).
עכשיו, הריצו את פקודת ה- hello-world של Docker כפי שעשיתם בקטע "הרצת פקודות Docker מוגברות" כדי לוודא שהשגיאה פתורה.
הוספת חשבון משתמש לקבוצה עם גישה של משתמש לא-רוט
אישרתם שהמנוע של Docker פועל, אך עדיין מקבלים שגיאת הרשאה נדחתה של Docker? אם כן, עליכם להוסיף את חשבון המשתמש שלכם לקבוצה עם גישת משתמש לא-רוט. למה? מכיוון שכל פקודת Docker שתריצו על מכונת Linux שאינה בקבוצת המשתמשים מפעילה שגיאת הרשאה נדחתה.
- הריצו את הפקודה
groupadd
למטה כדי ליצור קבוצה חדשה בשםdocker
. הזינו את הסיסמה שלכם כדי להמשיך ולהריץ את הפקודה.
אם קבוצת ה- docker קיימת בקבוצת המשתמשים, תראו פלט דומה לזה שמופיע למטה.

2. לאחר מכן, הריצו את הפקודה usermod
למטה כאשר אפשרויות ה- -aG
מסבירות לפקודה להוסיף את חשבון המשתמש שלכם (programmer
) לקבוצה (docker
). הפקודה הזו מאפשרת לחשבון המשתמש שלכם לקבל גישת משתמש לא-רוט.
3. הריצו את הפקודה newgrp
למטה כדי לשנות את זיהוי הקבוצה האמיתית הנוכחית לקבוצת ה- docker
.
הריצו את הפקודה הזו בכל פעם שתרצו להריץ את Docker כמשתמש לא-רוט.
4. לבסוף, הפעל מחדש את דוקר העולם החדש כדי לאשר אם אתה כבר לא רואה את השגיאה. אם, בנקודה זו, עדיין מתקבלת שגיאה, יש לשקול לתת יותר גישה לקובץ docker.sock. קובץ docker.sock הוא קובץ מתקשר UNIX, אמצעי לתקשורת בין מידע תהליכים בין המשתמש והמערכת, שבו דוקר הדמון קורא לכניסה של ממשק ה- API של דוקר.
הפעל את הפקודה chmod
למטה כדי להעניש לכל המשתמשים גישה לקריאה/כתיבה (666
) לקובץ /var/run/docker.sock
. כעת הפעל מחדש את דוקר העולם החדש כדי לראות אם השגיאה פתורה.
עריכת קובץ היחידה של שירותי דוקר
אם הפעלת דוקר כמשתמש שאינו מנהל אינה מספיקה לתקן את השגיאה, נסה לערוך את קובץ היחידה של שירותי דוקר של SystemD, מערכת שליטת שירות, . הקובץ שירות של דוקר מכיל פרמטרים רגישים שיכולים לשנות את ההתנהגותו של דוקר הדמון. ניתן לשנות את ההתנהגות ברירת המחדל של קובץ היחידה של דוקר על ידי הוספת פקודה נוספת לשינוי ההתנהגות ברירת המחדל של השירות.
1. הפעל את הפקודה למטה כדי לפתוח את קובץ היחידה של שירותי דוקר בעורך טקסט מועדף עליך. לדוגמה, קובץ השירות של דוקר נפתח בעורך הטקסט nano בדוגמה זו.
2. איתור האזור עם הכותרת [Service] בתוך קובץ היחידה של שירות ה-Docker, כפי שמוצג למטה. העתק/הדבק את הפקודות לתוך קובץ היחידה של שירות ה-Docker ושמור את השינויים.
למטה, הפקודה SupplementaryGroups
מגדירה את קבוצות ה-Unix הנוספות למיקום בו מבוצעים התהליכים. בו זמנית, הפקודה ExecStartPost
מבצעת ניקוי של פעולות שמבוצעות גם אם השירות נכשל בהתחלה נכונה.

3. כעת, הפעל את הפקודות למטה כדי לאתחל מחדש ולהפעיל את שירות ה-Docker. פעולה זו מאפשרת לך להתחיל את שירות ה-Docker מחדש כדי למנוע שגיאות בעת הרצת פקודות Docker.
4. לבסוף, הפעל מחדש את תמונת ה-Docker של hello-world
וראה אם עדיין מקבלים את שגיאת ההרשאה נדחת.
הרצת Docker במצב פריבילגי
לאחרונה, ברשימה לתיקון שגיאת ההרשאה הנדחתת של Docker היא הרצת Docker ב-מצב פריבילגי. בביצוע פעולה זו, ניתן לקונטיינר Docker גישת root למערכת.
הרצת Docker במצב פריבילגי היא פעולה מסוכנת ופוגעת בפני תקיפות מההוקרים. לכן עליך להיות זהיר ולהריץ את Docker במצב פריבילגי רק כאשר יש לך הבנה מדויקת של מה שאתה עושה.
1. הפעל את הפקודה למטה כדי לרשום את כל ה־Docker קונטיינרים במערכת שלך ולקבל את זיהוי ה־ID של הקונטיינר שברצונך להפעיל.

2. לאחר מכן, הפעל את הפקודה docker inspect
למטה כדי לבדוק אם הקונטיינר שברצונך להפעיל כבר נמצא במצב פריוולגיה (--format='{{.HostConfig.Privileged}}'
). החלף את CONTAINER_ID
למטה עם זיהוי הקונטיינר האמיתי שלקחת הערות עליו בשלב הראשון.
אם הקונטיינר נמצא במצב פריוולגיה, הפקודה תחזיר ערך true לקונסולה. אם הפקודה מחזירה ערך שקר, כפי שמוצג למטה, עבור לשלב הבא.

3. לבסוף, הפעל את הפקודה docker
למטה כדי להפעיל את קונטיינר ה־Docker במצב פריוולגיה (--privileged hello-world
).
סיכום
במהלך המדריך הזה, למדת דרכים רבות לפתור את שגיאת הרשאה נדחית של Docker, מהרצת פקודות מורגבות עד להפעלת Docker במצב פריוולגיה.
עכשיו אתה יודע איך להיפטר משגיאה בניית יישומי Docker; אולי אתה רוצה גם לשמור על ניקיון התמונות של Docker בכל עת?
Source:
https://adamtheautomator.com/docker-permission-denied/