Reputation: 107
I am trying to dynamically mount a volume from the container to the host and it works but there is a hitch. I am using the following command:
docker run -it --name Test1 -v $HOME/.myapp_configs/specificConfig.txt:/bin/specificConfig.txt:rw docker-image /bin/bash
The issue lies in that if the mount point on the host does not exist the docker command creates it but assigns it root:root
rather than $USER:$USER
like I would expect. I gather that this is more than likely a direct result of the namespace mapping issue that has been identified with Docker.
Does anyone have any thoughts on how I can force the host mount point to be created with the appropriate permissions? i.e.
drwxr-xr-x. 3 $USER $USER 31 Aug 21 15:02 ~/.myapp_configs/specificConfig.txt
instead of...
drwxr-xr-x. 3 root root 31 Aug 21 15:02 ~/.myapp_configs/specificConfig.txt
Thanks,
Bruce
Upvotes: 0
Views: 629
Reputation: 103965
What about making sure the file exists before running the container?
the command could look like:
test -f $HOME/.myapp_configs/specificConfig.txt || touch $HOME/.myapp_configs/specificConfig.txt
docker run -it --name Test1 -v $HOME/.myapp_configs/specificConfig.txt:/bin/specificConfig.txt:rw docker-image /bin/bash
explanation:
test -f <some file>
will have exit status 0
if the file exists||
will execute the following command only if the previous command exit status is different than 0
touch <some file>
modify an existing file modification time, or (and this is our case) create an empty fileOf course, if inside your container lies some code that acts differently whether the file exists or not, then you would have to adapt that code to check if the file is empty instead.
Upvotes: 1