특정 사용자를 위한 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
따라서 디렉터리는 필요한 정확한 사용자가 소유하며 탑재된 공유의 파일에 대한 모든 작업을 수행할 수 있습니다.
누군가가 유용하다고 생각하기를 바랍니다.