mount -t cifs 失敗、権限が拒否されました

mount -t cifs 失敗、権限が拒否されました

特定のユーザーのための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=ntlmoptions、settings、uidoptionsを削除しようとしましたが、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を実行する必要があります。

  1. 空にならないように、いくつかのダミーファイルをディレクトリに配置します(どちらの方法でもpermission deniedエラーが発生します)。
  2. オプションを使用してドッカーボリュームを作成する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

したがって、ディレクトリは必要な正確なユーザーが所有し、マウントされた共有のファイルに対してすべての操作を実行できます。

誰かが役に立つと思います。

おすすめ記事