WSL의 도커. WSL을 사용하여 Windows10에 해당 폴더를 마운트하고 싶습니다.

WSL의 도커. WSL을 사용하여 Windows10에 해당 폴더를 마운트하고 싶습니다.

Docker를 사용하는 동안 Windows에서 WSL을 사용하고 있습니다.

나는 이 솔루션을 채택하고 있습니다

https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-docker

그래서 WSL의 Docker를 통해 여기에 "file_at_host" 파일을 사용하여 "mounted_folder"를 마운트하려고 했습니다. 좋다...

docker run -it -v //C/Users/<username>/Desktop/mounted_folder://new_dir <image> bash 
docker run -it -v /C/Users/<username>/Desktop/mounted_folder:/new_dir <image> bash

그러나 다음 그림에서 볼 수 있듯이 ls 명령은 파일을 표시하지 않습니다.

CONTAINER에 폴더가 마운트되는 방식

반면에 명령 프롬프트에서도 같은 작업을 시도했습니다.

docker run -it -v C:\Users\<username>\Desktop\mounted_folder:/new_dir <image> bash

그런 다음 ls 명령으로 "file_at_host" 파일을 찾을 수 있습니다.

CONTAINER에 폴더가 마운트되는 방식

어떻게 이런 일이 일어날 수 있습니까?

그리고 Docker가 폴더를 마운트할 때 참조하는 폴더는 무엇입니까?

Windows GUI에서 해당 폴더를 찾을 수 있습니까?

마찬가지로 WSL을 사용하여 docker로 폴더를 마운트하려고 시도하고 컨테이너에 "something.ipynb" 파일을 만들었습니다.

docker run -p 8888:8888 -v /c/Users/<username>/Desktop/ds_python:/work --name my-lab <image>

그리고 Windows GUI에서 해당 폴더 "ds_python"에 있어야 하는 "something.ipynb" 파일을 찾을 수 없습니다.

그런데 WSL을 사용하여 Docker로 "Desktop"을 마운트하려고 했을 때 "something.ipynb" 파일이 존재하는 것을 발견했습니다.

CONTAINER에 폴더가 마운트되는 방식

위 그림처럼 "something.ipynb" 파일이 나타나는데 Windows GUI "C:\Users\Desktop\ds_python"에서는 찾을 수 없습니다.

이 문제에 대해 어떻게 돌파구를 찾을 수 있습니까?

"C:\Users\Desktop"과 "/c/Users//Desktop/"은 다릅니까?

그렇다면 Windows에서 후자를 어떻게 볼 수 있습니까?

또한 Docker의 WSL을 사용하여 Windows에 해당 폴더를 어떻게 탑재할 수 있나요?

답변1

WSL2를 사용하는 경우 Windows 드라이브는 /mnt 엔드포인트에 노출됩니다.

 ls -lah /mnt
total 12K
drwxr-xr-x 10 root   root   4.0K Nov 13 13:13 .
drwxr-xr-x 17 root   root   4.0K Dec 12 11:12 ..
drwxrwxrwx  1 sathya sathya  512 Dec  6 12:47 c
drwxrwxrwx  1 sathya sathya 4.0K Dec  2 10:31 d
drwxrwxrwx  1 sathya sathya 4.0K Dec  2 10:31 e
drwxrwxrwx  1 sathya sathya 4.0K Dec  2 10:31 f
drwxrwxrwx  1 sathya sathya  512 Dec  2 10:31 g
drwxrwxrwx  1 sathya sathya 4.0K Dec  2 10:31 h
drwxrwxrwx  2 root   root   4.0K Nov 13 13:13 i
drwxrwxrwt  2 root   root     40 Dec 12 11:12 wsl


/mntWindows 파일을 마운트하려면 위에서 언급한 것과 동일한 형식을 사용합니다. 즉, 바인드 마운트로 이어지는 부분을 포함하여 전체 경로를 제공합니다 .

docker run -it -v /mnt/c:/host/c alpine sh

이를 통해 C 드라이브가 컨테이너의 /host/c에 마운트됩니다.

ls -lah /host/c

drwxrwxrwx    1 1000     1001         512 Dec 15 07:42 .
drwxr-xr-x    3 root     root        4.0K Dec 15 10:35 ..
lrwxrwxrwx    1 1000     1001          12 Sep 29  2018 Documents and Settings -> /mnt/c/Users
dr-xr-xr-x    1 1000     1001         512 Dec  9 16:54 Program Files
dr-xr-xr-x    1 1000     1001         512 Nov 13 11:03 Program Files (x86)
drwxrwxrwx    1 1000     1001         512 Nov  7 13:26 ProgramData
dr-xr-xr-x    1 1000     1001         512 Oct  2 08:39 Users
dr-xr-xr-x    1 1000     1001         512 Dec 15 07:43 Windows

답변2

먼저, 탑재된 폴더를 지정할 때 채택한 Stack Overflow의 솔루션은 오래된 정보이며 WSL용이 아닌 Docker Toolbox에 관한 것입니다.

그래서 내 상황에는 해당되지 않는다는 것을 알았습니다.

둘째, 다음과 같이 WSL에 탑재된 폴더를 지정해야 합니다.

docker run -it -v /mnt/c/Users/'username'/desktop/mounted_folder:/new_dir <image> bash

셋째, 마운트된 폴더를 다음과 같이 지정하면

/c/Users/'username'/desktop/mounted_folder

다음과 같은 경로로 GUI에서 폴더를 확인할 수 있습니다.

\\wsl$\Ubuntu\c\Users\'username'\desktop\mounted_folder

탐색기 결과 이미지

\\wsl$\Ubuntu~WSL의 배포판은 Ubuntu였으므로 를 입력해야 합니다 . Ubuntu-20.04가 설치되었습니다.

에 의한 결과wsl --list -v

wsl --list -v 결과의 스크린샷

마운트된 폴더를 다음과 같이 지정하면

/mnt/c/Users/'username'/desktop/mounted_folder

다음과 같은 경로로 GUI에서 폴더를 확인할 수 있습니다.

C:\Users\'username'\Desktop\mounted_folder

전자의 경우 Windows의 명령줄에서 탑재된 폴더를 확인하려면 PowerShell을 사용해야 합니다. 명령 프롬프트가 아닙니다.

명령 프롬프트 오류

관련 정보