Wpis z mikrobloga

#docker #windows #windows10 #devops #mongodb

Chciałem zrobić prostą rzecz: uruchomić Dockera z MongoDB, podpiąć folder jako volume do danych w bazie (bo chcę mieć dostęp do plików bazy pod ręką).

Mam Windows 10, używam WSL, w ustawieniach Dockera mam zaznaczone "File sharing" na dysku, na którym chcę montować (z tym miałem problem, podobno trzeba było w firewallu odblokować, ale nadal mi nie działało - jak zaktualizowałem Dockera do nowszej wersji, to się udało).

1. Próbowałem normalnie z PWD:

docker run -v $(pwd)/mongo:/data/db/ -p 27017:27017 --name mymongo -d mongo:4.2.2-bionic
Ale nie działa. Nie znajduje mi ścieżki. Próbowałem wszystkie kombinacje jakie znalazłem w necie: $(pwd), $PWD, /${PWD} itd. itd.

2. Rezygnuję z PWD i podaję lokalną ścieżkę:

docker run -v /mnt/c/dev/mongo:/data/db/ -p 27017:27017 --name mymongo -d mongo:4.2.2-bionic
- Próbowałem z /mnt/c, /c itd.
- Próbowałem różnych ustawień tzn.
a) W /etc/wsl.conf

[automount]
root=/
options="metadata"

b) W ~/.bashrc:

alias docker=docker.exe
alias docker-compose=docker-compose.exe
export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"

Wszystkie próby sprowadzają się do dwóch końców:

Opcja 1. Mongo wstaje, ale folder nie montuje się i nie mam żadnych plików w (nie)zamontowanym folderze.

Opcja 2. Po starcie kontenera w folderze pojawiają się pliki, ale Mongo nie wstaje. Błąd:

connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
Nie mam już pomysłu... Po co ten Docker i WSL na Windowsa jak taka najprostsza rzecz nie działa? Na Ubuntu to wszystko działało bez problemu, ale w domu potrzebuję Windowsa.
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@mk321: ${PWD} jest w PowerShellu, a $(pwd) dla Linuksa. Dla windowsowej konsoli jest %cd%
Zaskakuje mnie, że teraz można używać /mnt/c/. Kiedyś to było tylko C:\.
Błąd 2 jest z uprawnieniami. Mongo nie może stworzyć pliku bazy. Jakbyś wszedł docker exec do tego kontenera i sprawdził uprawnienia albo zawartość katalogu, aby upewnić się, że to właściwy.
  • Odpowiedz
@andale: dodam jeszcze, że nie ma znaczenia czy używam Git Bash czy nie, bo i tak korzystam z WSL (bo mam w Git Bash wpięte /usr/bin/bash.exe czyli WSL).

Odpalam zwykłe cmd.exe, wpisuję wsl, przenosi mnie na "Ubuntu" i działa tak samo jak w Git Bash:

$ echo
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@mk321: Ten Git Bash działa w trybie administratora? Jaki Windows?
Czy próbowałeś bez WSL? Chyba nie ma wielu różnic w komendach.
  • Odpowiedz
@andale: Git Bash działa tak jak go uruchomię (czyli tak samo jak cmd). Domyślnie bez administratora, ale mogę uruchomić z prawami admina. Z tym, że jak uruchamiam WSL, to tam mam "Ubuntowe" prawa admina (user na prawach roota).
Windows 10 wersja 1903.

Chciałbym móc używać linuksowych komend (bo też piszę skrypty), więc dlatego chciałbym WSL albo chociaż Git Bash. Obecnie używam obu.

Ale testuję, żeby wyeliminować
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@mk321: To może spróbuj na pendrajwie to postawić? Będzie wolno, ale sprawdzisz, czy to problem z systemem plików.
  • Odpowiedz
spróbuj na pendrajwie to postawić


@andale: udało mi się, żeby Docker widział pendrive, ale nadal nie działa.

Musiałem zrobić restart kompa i dopiero w ustawieniach Docker Desktop zaczął go widzieć. W Docker Desktop musiałem zaznaczyć File Sharing na tym dysku (pendrive). Teraz Docker go widzi i muszę podawać po nazwie
  • Odpowiedz
Tak podmontuj ten dysk hyperv w Windowsie a później podmontuj w wslu

@PendzoncySzczypiorek: zamontowałem dysk z Hyper-V (ten automatycznie zrobiony przez Dockera) w Windowsie (według tego), ale go nie widzę. W internecie pisali, żeby ustawić literę takiego dysku. Ale nie mam takiej możliwości (screen).

Może powinienem utworzyć kolejny wirtualny dysk, dodać go do tej dockerowej maszyny na Hyper-V i wtedy taki nowy dysk dałoby się zamontować na Windowsie?

Tylko nawet jakby tak
mk321 - > Tak podmontuj ten dysk hyperv w Windowsie a później podmontuj w wslu
@Pend...

źródło: comment_8TiWxeThQDF3hQog0TTcnWjkB5l2vmH6.jpg

Pobierz
  • Odpowiedz