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

कमांड चलाते समय डॉकर अनुमति अस्वीकृत त्रुटि को कैसे ठीक करें

⏱️2 min read  ·  398 words

त्रुटिडॉकर डेमॉन सॉकेट से कनेक्ट करने का प्रयास करते समय अनुमति अस्वीकार कर दी गई इसका मतलब है कि आपके उपयोगकर्ता को डॉकर से बात करने की अनुमति नहीं है। कंटेनरों के अंदर और वॉल्यूम के साथ भी अनुमति संबंधी समस्याएं हैं। यहां प्रत्येक को ठीक करने का तरीका बताया गया है।

त्रुटि 1: डॉकर डेमॉन से कनेक्ट करने की अनुमति अस्वीकृत

# 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'

सुरक्षा नोट: डॉकर समूह के सदस्यों के पास प्रभावी रूप से रूट एक्सेस है (डॉकर होस्ट फ़ाइल सिस्टम को माउंट कर सकता है)। केवल विश्वसनीय उपयोगकर्ता ही जोड़ें और बेहतर सुरक्षा के लिए रूटलेस डॉकर पर विचार करें।

फिक्स 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 इसे वर्तमान शेल में लागू करने के लिए।

प्रश्न: क्या मेरे उपयोगकर्ता को डॉकर समूह में जोड़ना सुरक्षित है?
उत्तर: यह प्रभावी रूप से रूट-स्तरीय पहुंच प्रदान करता है (डॉकर होस्ट पथ को रूट के रूप में माउंट कर सकता है)। यह सुविधाजनक है लेकिन सुरक्षा संबंधी विचार – केवल विश्वसनीय उपयोगकर्ता ही जोड़ें। बेहतर सुरक्षा के लिए, रूटलेस डॉकर का उपयोग करें, जो आपके उपयोगकर्ता के रूप में डेमॉन चलाता है।

प्रश्न: मेरे कंटेनर द्वारा बनाई गई फ़ाइलें रूट के स्वामित्व में क्यों हैं?
उ: डिफ़ॉल्ट रूप से, कंटेनर रूट के रूप में चलते हैं, इसलिए माउंटेड वॉल्यूम पर उनके द्वारा बनाई गई फ़ाइलें रूट-स्वामित्व वाली होती हैं। कंटेनर को अपने उपयोगकर्ता के रूप में-u $(id -u):$(id -g)के साथ चलाएँ , या Dockerfile में एक गैर-रूट USER को परिभाषित करें।

प्रश्न: क्या मुझे डॉकर के साथ सूडो का उपयोग करना चाहिए?
उ: इससे बचें – प्रत्येक कमांड को सूडो के साथ उपसर्ग करना असुविधाजनक है और रूट-स्वामित्व वाली फ़ाइलें बना सकता है। अपने उपयोगकर्ता को डॉकर समूह में जोड़कर (या रूटलेस डॉकर का उपयोग करके) अंतर्निहित समस्या को ठीक करें ताकि डॉकर कमांड सूडो के बिना काम करें।

प्रश्न: मैं वॉल्यूम अनुमति संबंधी समस्याओं से पूरी तरह कैसे बचूँ?
ए: अपने होस्ट उपयोगकर्ता (-u $(id -u):$(id -g)) से मेल खाने वाले गैर-रूट उपयोगकर्ता के रूप में कंटेनर चलाएं, अपने डॉकरफ़ाइल में एक उपयोगकर्ता को परिभाषित करें, और एक एंट्रीपॉइंट स्क्रिप्ट में स्वामित्व को संभालें। होस्ट और कंटेनर के बीच सुसंगत उपयोगकर्ता आईडी अधिकांश समस्याओं को रोकती है।

निष्कर्ष

डॉकर अनुमति त्रुटियाँ कुछ प्रकारों में आती हैं। क्लासिक “डेमन सॉकेट से कनेक्ट करने की अनुमति अस्वीकृत” कोद्वारा ठीक किया गया है अपने उपयोगकर्ता को डॉकर समूह (sudo usermod -aG docker $USER) में जोड़ना और लॉग आउट/इन करना – या बेहतर, बेहतर सुरक्षा के लिए रूटलेस डॉकर का उपयोग करना। कंटेनरों के अंदर और वॉल्यूम के साथ अनुमति संबंधी समस्याएं रूट के रूप में चल रहे कंटेनरों से आती हैं: उन्हेंद्वारा ठीक करें कंटेनर को अपने उपयोगकर्ता के रूप में चलाना (-u $(id -u):$(id -g)) या अपने डॉकरफ़ाइल में एक गैर-रूट उपयोगकर्ता को परिभाषित करना. यह समझना कि डॉकर सॉकेट रूट-स्वामित्व वाला है और कंटेनर रूट पर डिफ़ॉल्ट है, लगभग हर डॉकर अनुमति समस्या की व्याख्या करता है।

✍️ Leave a Comment

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

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