Docker를 사용하는 동안 Windows에서 WSL을 사용하고 있습니다.
나는 이 솔루션을 채택하고 있습니다
그래서 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 명령은 파일을 표시하지 않습니다.
반면에 명령 프롬프트에서도 같은 작업을 시도했습니다.
docker run -it -v C:\Users\<username>\Desktop\mounted_folder:/new_dir <image> bash
그런 다음 ls 명령으로 "file_at_host" 파일을 찾을 수 있습니다.
어떻게 이런 일이 일어날 수 있습니까?
그리고 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" 파일이 존재하는 것을 발견했습니다.
위 그림처럼 "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
/mnt
Windows 파일을 마운트하려면 위에서 언급한 것과 동일한 형식을 사용합니다. 즉, 바인드 마운트로 이어지는 부분을 포함하여 전체 경로를 제공합니다 .
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
마운트된 폴더를 다음과 같이 지정하면
/mnt/c/Users/'username'/desktop/mounted_folder
다음과 같은 경로로 GUI에서 폴더를 확인할 수 있습니다.
C:\Users\'username'\Desktop\mounted_folder
전자의 경우 Windows의 명령줄에서 탑재된 폴더를 확인하려면 PowerShell을 사용해야 합니다. 명령 프롬프트가 아닙니다.