How To Fix “Permission Denied” Errors When Mounting Volumes in Docker
When working with Docker volumes, one of the most common and frustrating issues is encountering a "Permission denied"
error—especially when running on Linux or WSL. In this guide, we’ll show you why it happens and How To Fix “Permission Denied” Errors When Mounting Volumes in Docker with clear examples.
The Problem: “Permission Denied” on Mounted Volume
Let’s say you have a Python script that writes to a file:
app.py
with open("/data/output.txt", "w") as f:
f.write("Hello from Docker!\n")
Dockerfile
FROM python:3.11-slim
COPY app.py .
CMD ["python", "app.py"]

Now you build and run the container:
docker build -t write-demo .

docker run --rm -v $(pwd)/data:/data write-demo
You get this error:
PermissionError: [Errno 13] Permission denied: '/data/output.txt'
Why This Happens
Docker containers run processes as a specific user, often root
or a non-root user like www-data
. But when mounting a host directory (like $(pwd)/data
), the container’s user may not have permission to write to that folder.
This issue is common on:
- Linux/WSL (because of file ownership)
- Docker Desktop for Mac/Windows with volume syncing
- Containers that run as non-root users
Solution 1: Match UID/GID Between Host and Container
Get your user ID on the host:
id -u
Then run the container as your host UID:
docker run --rm \
-v $(pwd)/data:/data \
-u $(id -u):$(id -g) \
write-demo
This ensures the container process has write access to the mounted volume.
Solution 2: Change Directory Permissions
Change the permissions on your local data/
folder:
chmod 777 ./data
⚠️ Use with caution — this makes the directory writable by any user. It’s quick for development but insecure for production.
Solution 3: Use Named Volumes (Optional)
Docker named volumes don’t have this problem because Docker manages the ownership:
docker volume create mydata
docker run --rm -v mydata:/data write-demo
This works because Docker ensures the volume is writable by the container’s default user.
Bonus: Dockerfile Fix (Set Workdir Permissions)
If you’re creating your own image and want to control permissions at build time:
FROM python:3.11-slim
RUN mkdir /data && chmod 777 /data
COPY app.py .
CMD ["python", "app.py"]
This ensures the /data
directory inside the container is writable.
“Permission denied” errors with Docker volumes are almost always related to user permissions between the host and container. You can fix them by:
- Matching host and container user IDs (
-u
) - Adjusting permissions on the host
- Using Docker-managed named volumes
With these tools, you’ll avoid one of the most common pitfalls in Docker development!
This is the end of the How To Fix “Permission Denied” Errors When Mounting Volumes in Docker.
You can read more useful articles like How To Limit Resources For Docker Containers.
Follow us for the more helpful posts!
We hope this is a useful post for you.