Docker nie widzi plików w podmontowanym katalogu (volume)

Problem

Używam Docker Toolbox na Windowsie. Próbowałem podmontować lokalny katalog jako wolumen (volume) w kontenerze dockerowym. W lokalnym katalogu były pliki, jednak w kontenerze ich nie widziałem – był tam jedynie pusty katalog.

Dla przykładu, na komputerze-gospodarzu mam katalog „my_data”, a w środku plik index.html. Tworzę kontener i montuję folder jako wolumen w kontenerze. Potem próbuję wyświetlić listę plików z kontenera, ale jedyne, co dostaję, to pusta lista:

$ ls my_data/
index.html
$ docker run --rm -it -v `pwd`/my_data:/shared_volume ubuntu ls -al /shared_volume
total 4
drwxrwxrwx 1 root root 0 Oct 26 12:01 .
drwxr-xr-x 35 root root 4096 Oct 27 11:22 ..
(no index.html here)

Rozwiązanie

Znalezienie rozwiązania zajęło mi kilka dni. Okazało się, że domyślnie w Docker Toolbox na Windows można montować tylko foldery znajdujące się w C:\Users .  Folder, którego chciałem użyć znajdował się jednak w katalogu C:\Programming . Oto rozwiązanie, które zadziałało u mnie.

Uruchom VirtualBox GUI i dodaj katalog C:\Programming jako folder współdzielony w maszynie „default” (aby było to możliwe, VirtualBox powinien być uruchomiony z poziomu tego samego użytkownika, co docker).

Dodawanie nowego folderu współdzielonego do maszyny wirtualnej

Następnie wyedytuj plik „C:\Program Files\Docker Toolbox\start.sh” i dodaj następujące linie, np. pomiędzy sekcjami „Checking status on $VM” i „Setting env”:

STEP="Mounting additional folders"
"${DOCKER_MACHINE}" ssh default 'sudo mkdir --parents /c/Programming'
"${DOCKER_MACHINE}" ssh default 'sudo mount -t vboxsf c/Programming //c/Programming'

(na podstawie https://github.com/docker/machine/issues/1814#issuecomment-239957893)

Następnie wykonaj

docker-machine stop

I zrestartuj Docker Quickstart Terminal.

Teraz powyższy przykład powinien działać:

$ docker run --rm -it -v `pwd`/my_data:/shared_volume ubuntu ls -al /shared_volume
total 5
drwxrwxrwx 1 root root 0 Oct 26 12:01 .
drwxr-xr-x 35 root root 4096 Oct 27 11:27 ..
-rwxrwxrwx 1 root root 13 Oct 26 12:01 index.html

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *