I am running docker for windows on Windows 10
I would like attach a volume to a linux based container. This volume in available on our intranet and is a SMB storage.
On my host machine, I have mapped it with letter G:.
$user = “publishingstudio@xxxxxx”
$pwd = ConvertTo-SecureString “xxxxxxxxxx” -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user,
pwd)
New-SmbGlobalMapping -RemotePath \\xxxxx\publishingstudio
-Credential $cred -LocalPath G:
I am able to access its content using windows explorer
Now, I have tried to shared this location with windows for docker using docker for windows setting panel/
When I click on ‘Apply & Restart’, I have a strange behaviour. A line is added but is empty.
I then try to use it using a docker run command.
docker run -v g:/:/data my_container
The container is launch but there is no data.
What is wrong?
Thanks for you help.

shoattraceparts:
I would like attach a volume to a linux based container. This volume in available on our intranet and is a SMB storage.
I would try to mount it directly into the container with
mount -t cifs
.
It means I need to launch the container with a --priviledge option because I saw that mount command is not available in “docker run” normal mode.
Do you have an example of how to use mount with credantials? I am not so familiar with linux environment.
Thanks for you help.
type: cifs
o: "username=${SMBUSER},password=${SMBPASSWORD}"
device: "//192.168.1.220/Media 2/Videos"
I have a NAS with movies at the address you see above. To run the compose file enter:
$ export SMBUSER= # your smb user name here
$ export SMBPASSWORD= # and here your password
$ docker-compose up
It will just list the files in Videos and then the container exits.
You will probably have to set some more options like iocharset to get a working system. Take a look at man mount.cifs for that.
(Edit: I forgot to mention that I typed these commands in WSL2. In PowerShell you set environment variables with $Env:....)
driver_opts:
type: cifs
o: "username=publishingstudio@stro.fr.traceparts.com,password=xxxx"
device: "//syno3.stro.fr.traceparts.com/publishingstudio$"
I get the following error
ERROR: Invalid interpolation format for “driver_opts” option in volume “networkShared”: “//syno3.stro.fr.traceparts.com/publishingstudio$”
Is it due to the ‘$’ character?
Ok I found the problem I need to unspecify $ by doubling it.
Now I get another error :
Where does /var/lib/docker/volumes/test_networkShared/_data comes from?
Docker Desktop for Mac(Intel Chip)
Docker Desktop for Mac(Apple Chip)
Docker Desktop for Windows
Docker Desktop for Linux