Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker bind mount permissions - unexpected mounting as root:root

Tags:

docker

I have a directory /home/foo/mydir owned by foo:foo (uid=1040) that I bind mount in the alpine docker image as such: docker run -it --rm -v /home/foo/mydir:/tmp/mydir --user 1040 alpine

but when I check the directory in the container, it is owned by root:root. Am I crazy? I thought docker passed through file ownership when mounting in a container? Is there anyway to retain the permissions (ie have mydir owned by foo:foo in the container) without chown'ing it in the container?

like image 736
Alexander David Avatar asked May 28 '26 23:05

Alexander David


1 Answers

I have two Ubuntu Jammy machines and this issues happened on one machine, but not the other. I finally found the cause and the solution.

Apparently the issue is caused by Docker Desktop. On the first machine I only installed the Docker engine. The second machine had Docker Desktop installed, which runs a virtual machine and your containers will run inside that virtual machine. In that case you can't just mount the host directory the same way into the containers, because you need to mount it first into the virtual machine.

One solution is to remove Docker completely (including ~/.docker), and then only install the Docker engine (https://docs.docker.com/engine/install/).

Alternatively, on the second machine, if you have Docker CE installed too, you can switch back to the "default" context:

docker context use default

Based on my support enquiry here:

https://forums.docker.com/t/bind-mount-permissions-unexpected-mounting-as-root-root/129328?u=swpppp

like image 149
Serrano Avatar answered May 31 '26 15:05

Serrano



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!