特定のユーザーのためのWindows 10共有があります。その後、DockerコンテナにDebian:stretchをインストールしました。次のように共有フォルダをマウントしようとしています。
root@b9cda19f784c:~# mount -t cifs -v -o username=dockerfile,password=docker,sec=ntlm //10.0.75.1/hlds /root/somedir
mount: permission denied
sec=ntlm
options、settings、uid
optionsを削除しようとしましたが、gid
成功しませんでした。また、期待していた詳細なメッセージも全く見られませんでした-v
。
私のWindows 10ホストでは、次を使用してこのフォルダをマウントできます。
net use p: \\10.0.75.1\hlds /user:dockeruser
mount
デバッグのためにコマンド出力にさらに情報を提供するにはどうすればよいですか?それとも私の命令に何かがありましたかmount
?
修正する
フラグを使用してコンテナを実行することは--privileged
役に立ちません。
root@62d77b4c1058:/# mount -v -t cifs -o username=dockerfile,password=docker //10.0.75.1/hlds /root/mnt
mount.cifs kernel mount options: ip=10.0.75.1,unc=\\10.0.75.1\hlds,user=dockerfile,pass=********
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Dockerを使用してボリュームを作成し、正常にマウントできませんでした。
PS F:\repos\hlds-docker> docker volume create --opt type=cifs --opt device=//10.0.75.1/hlds --opt o=username=dockerfile,password=docker,file_mode=0777,dir_mode=0777,uid=0,gid=0 myvolume
myvolume
PS F:\repos\hlds-docker> docker run --rm -v myvolume:/root -it --privileged debian:stretch bash
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: error while mounting volume with options: type='cifs' device='//10.0.75.1/hlds' o='username=dockerfile,password=docker,file_mode=0777,dir_mode=0777,uid=0,gid=0': permission denied.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
私のドッカーバージョン:
PS F:\repos\hlds-docker> docker version
Client: Docker Engine - Community
Version: 18.09.1
API version: 1.39
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:34:26 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.1
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:41:49 2019
OS/Arch: linux/amd64
Experimental: false
答え1
それで、何度も試行錯誤の最後に解決策を見つけました(しかし奇妙なようです)。次の手順2を実行する必要があります。
- 空にならないように、いくつかのダミーファイルをディレクトリに配置します(どちらの方法でも
permission denied
エラーが発生します)。 - オプションを使用してドッカーボリュームを作成する
noserverino
(偶然発見)
私の場合は、次のようになります。
docker volume create --opt type=cifs --opt device=//10.0.75.1/hlds --opt o=username=dockeruser,password=docker,noserverino,file_mode=0777,dir_mode=0777,uid=1000,gid=1000 somevol
それから:
docker run --rm -v somevol:/home/steam/opts -it krow7/hlds:1.0 bash
したがって、ディレクトリは必要な正確なユーザーが所有し、マウントされた共有のファイルに対してすべての操作を実行できます。
誰かが役に立つと思います。