🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

كيفية إصلاح خطأ رفض إذن Docker عند تشغيل الأوامر

⏱️2 min read  ·  407 words

الخطأتم رفض الإذن أثناء محاولة الاتصال بمقبس Docker الخفي يعني أن المستخدم الخاص بك ليس لديه إذن بالتحدث إلى Docker. هناك أيضًا مشكلات تتعلق بالأذونات داخل الحاويات ووحدات التخزين. وإليك كيفية إصلاح كل منهما.

الخطأ 1: تم رفض الإذن بالاتصال بـ Docker Daemon

# The error
docker ps
# Got permission denied while trying to connect to the Docker daemon
# socket at unix:///var/run/docker.sock

# Cause: your user isn't in the 'docker' group, so it can't
# access the Docker socket (which is root-owned)

الإصلاح 1: أضف المستخدم الخاص بك إلى مجموعة عامل الإرساء

# Add your user to the docker group
sudo usermod -aG docker $USER

# Apply the change - log out and back in, OR:
newgrp docker

# Verify
docker ps   # should work now without sudo

# Check group membership
groups   # should include 'docker'

ملاحظة أمنية: يتمتع أعضاء مجموعة عامل الإرساء بإمكانية الوصول إلى الجذر بشكل فعال (يمكن لـ Docker تثبيت نظام الملفات المضيف). أضف فقط المستخدمين الموثوق بهم، وفكر في Docker بدون جذور لتحسين الأمان.

الإصلاح 2: عامل الإرساء بدون جذور (أكثر أمانًا)

# Rootless Docker runs the daemon as your user, avoiding the group issue
dockerd-rootless-setuptool.sh install

# Set the socket for your user
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock

# Add to your shell config to persist
echo 'export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock' >> ~/.bashrc

الخطأ 2: تم رفض الإذن داخل الحاوية

# Files created by a root-running container are owned by root,
# causing permission issues on mounted volumes

# 🐛 Container runs as root, creates root-owned files in your volume
docker run -v $(pwd):/app myimage
# Files in ./app are now owned by root - you can't edit them

# ✅ Run the container as your user
docker run -u $(id -u):$(id -g) -v $(pwd):/app myimage

# ✅ Or set a non-root user in the Dockerfile
FROM node:20-alpine
RUN adduser -D appuser
USER appuser

الخطأ 3: مشكلات إذن تحميل وحدة التخزين

# 🐛 Container can't write to a mounted volume

# ✅ Match the container user to the host file owner
docker run -u $(id -u):$(id -g) -v $(pwd)/data:/data myimage

# ✅ Or fix ownership on the host
sudo chown -R $(id -u):$(id -g) ./data

# ✅ For named volumes, initialize permissions in an entrypoint
# entrypoint.sh
chown -R appuser:appuser /data
exec "$@"

الخطأ 4: مشكلات إذن إنشاء عامل الإرساء

# docker-compose.yml - set the user for a service
services:
  app:
    image: myimage
    user: "${UID}:${GID}"   # pass host user/group
    volumes:
      - ./app:/app

# Run with your IDs
UID=$(id -u) GID=$(id -g) docker compose up

تشخيص مشاكل الأذونات

# Check who owns the Docker socket
ls -l /var/run/docker.sock
# srw-rw---- 1 root docker ... /var/run/docker.sock
# Owned by root:docker - you need to be in the docker group

# Check the docker service is running
sudo systemctl status docker

# Inside a container, check what user you're running as
docker run myimage whoami

الأسئلة المتداولة

س: لماذا أحتاج إلى تسجيل الخروج بعد إضافة نفسي إلى مجموعة عامل الإرساء؟
ج: يتم تحميل عضوية المجموعة عند تسجيل الدخول. بعدusermod -aG docker $USER، جلستك الحالية لا تحتوي على المجموعة الجديدة بعد. قم بتسجيل الخروج ثم الدخول مرة أخرى، أو قم بتشغيلnewgrp docker لتطبيقه في الصدفة الحالية.

س: هل إضافة المستخدم الخاص بي إلى مجموعة عامل الإرساء أمر آمن؟
ج: يمنح وصولاً فعالاً على مستوى الجذر (يمكن لـ Docker تحميل مسارات المضيف كجذر). إنه أمر مريح ولكن له اعتبارات أمنية – أضف فقط المستخدمين الموثوق بهم. للحصول على أمان أفضل، استخدم Docker بدون جذور، الذي يقوم بتشغيل البرنامج الخفي كمستخدم لك.

س: لماذا تكون الملفات التي تم إنشاؤها بواسطة الحاوية الخاصة بي مملوكة للجذر؟
ج: بشكل افتراضي، تعمل الحاويات كجذر، وبالتالي فإن الملفات التي تقوم بإنشائها على وحدات التخزين المحملة تكون مملوكة للجذر. قم بتشغيل الحاوية كمستخدم لك باستخدام-u $(id -u):$(id -g)أو حدد مستخدمًا غير جذر في ملف Dockerfile.

س: هل يجب أن أستخدم Sudo مع عامل الإرساء؟
ج: تجنب ذلك، فبدء كل أمر بـ sudo أمر غير مريح ويمكن أن يؤدي إلى إنشاء ملفات مملوكة للجذر. أصلح المشكلة الأساسية عن طريق إضافة المستخدم الخاص بك إلى مجموعة عامل الإرساء (أو استخدام Docker بدون جذر) حتى تعمل أوامر عامل الإرساء بدون sudo.

س: كيف يمكنني تجنب مشكلات أذونات وحدة التخزين بالكامل؟
ج: قم بتشغيل الحاويات كمستخدم غير جذر مطابق للمستخدم المضيف ( )، وحدد مستخدمًا في ملف Dockerfile الخاص بك، وتعامل مع الملكية في برنامج نصي لنقطة الدخول. تمنع معرفات المستخدم المتسقة بين المضيف والحاوية معظم المشكلات.-u $(id -u):$(id -g)الخلاصة

تأتي أخطاء إذن Docker في عدة نكهات. تم إصلاح “رفض الاتصال بمقبس البرنامج الخفي” الكلاسيكي بواسطة

إضافة المستخدم الخاص بك إلى مجموعة عامل الإرساء () وتسجيل الخروج/الدخولsudo usermod -aG docker $USER — أو الأفضل من ذلك، استخدام Docker بدون جذور لتحسين الأمان. تأتي مشكلات الأذونات داخل الحاويات ومع وحدات التخزين من حاويات تعمل كجذر: قم بإصلاحها بواسطةتشغيل الحاويات كمستخدم لك () أو تحديد مستخدم غير جذر في ملف Dockerfile-u $(id -u):$(id -g). إن فهم أن مقبس Docker مملوك للجذر وأن الحاويات الافتراضية للجذر يفسر كل مشكلة تتعلق بأذونات Docker تقريبًا.. إن فهم أن مقبس Docker مملوك للجذر وأن الحاويات الافتراضية للجذر يفسر كل مشكلة تتعلق بأذونات Docker تقريبًا.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা