Zrozumiałem, że głównym ograniczeniem uruchamiania dokera w innych systemach operacyjnych były pojemniki Linux Network, które to umożliwiły. (Z pewnością dla komputerów Mac).
Niedawno Microsoft ogłosił wersję beta trybu użytkownika Ubuntu Linux działającego natywnie na systemie Windows 10. Może to uruchamiać pliki binarne skompilowane w formacie ELF w systemie Windows (w przeciwieństwie do cygwina, który wymaga kompilacji).
Moje pytanie brzmi: czy możesz uruchomić Dockera w nowej przestrzeni użytkownika bash dla systemu Windows 10 (Ubuntu)?
bash
przestrzeń użytkownika. To prawdziwa, dość kompletna przestrzeń użytkownika Linuksa, ale bez X Windowsa, tzn. Tylko tekstu. Powiedzenie „bash” dość dobrze komunikuje ograniczenie tekstowe.Odpowiedzi:
Możesz używać Docker Desktop dla Windows jako silnika i Docker dla Linux jako klienta w WSL na Ubuntu / Debian na Windows. Połącz je przez TCP.
Zainstaluj Docker Desktop dla systemu Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows Jeśli chcesz używać kontenerów Windows zamiast kontenerów Linux, oba kontenery typu mogą być zarządzane przez klienta dokera Linux w przestrzeń użytkownika bash.
Od wersji 17.03.1-ce-win12 (12058) musisz zaznaczyć opcję Ujawnij demona na tcp: // localhost: 2375 bez TLS, aby umożliwić klientowi Linux Docker kontynuowanie komunikacji z demonem Windows Docker przez TCP
Wykonaj następujące kroki:
lub
Aby było trwałe:
Dodaj odpowiednie zmienne do .bashrc
Oczywiście możesz zainstalować komponowanie dokera
Lub używając Pythona Pipa
I zakończenie Bash. Najlepsza część:
Przetestowałem to przy użyciu Docker Desktop w wersji 2.1.0.1 (37199) przy użyciu funkcji Hyper-V:
Kłęby
Zachowaj ostrożność podczas dodawania woluminów. Ścieżka
C:\dir
będzie widoczna jak/mnt/c/dir
na WSL i/c/dir/
przez silnik dokera. Możesz go przezwyciężyć na stałe:Musisz wyjść i ponownie załadować WSL po wprowadzeniu zmiany do wsl.conf, aby WSL odczytał twoje zmiany przy uruchomieniu.
AKTUALIZACJA
od: Co nowego w wierszu polecenia w systemie Windows 10 w wersji 1803
AKTUALIZACJA
Ten skrypt i użycie gniazd uniksowych zostały uwzględnione w konfiguracji pengwin Pengwina .
pozdrowienia
źródło
docker.exe
bezpośrednio do zapytania / interakcji podsystemu dokera. Należy jednak pamiętać, że okno dokowane dla systemu Windows będzie używać zmiennych i konfiguracji systemu Windows.Od teraz (kwiecień 2016 r.) Odpowiedź brzmi:
Nie wiemy jeszcze (ale prawdopodobnie nie).
Fakty
Spekulacja
Pytanie brzmi więc, czy zaimplementowane syscalls, których potrzebuje Docker (między innymi chroot i przestrzenie nazw), czy nie. Odpowiedź brzmi: prawdopodobnie „nie”. Docker wymaga dość wyrafinowanej (i specyficznej dla Linuksa) funkcjonalności do zarządzania procesami i zasobami oraz izolacji procesów. Chociaż prawdopodobnie można to wszystko replikować w systemie Windows, byłoby to dużo pracy, a ponieważ celem tej funkcji systemu Windows wydaje się być uruchamianie programów przestrzeni użytkownika dla systemu Linux, wydaje się mało prawdopodobne, aby wykonali całą pracę (i trzymali ją w tajemnicy) .
Jednak, o ile mi wiadomo, nie ma jednoznacznych informacji.
Istniejące porty dokujące
Oczywiście, jeśli Microsoft zdecyduje, że chce obsługiwać Docker w Windows 10, prawdopodobnie będzie w stanie to zaoferować. Istnieje pewien precedens dla przenoszenia Dockera na inne jądro:
źródło
Pierwszy podgląd poufnych informacji został wydany wczoraj. Próbowałem zainstalować okno dokowane, ale nie udaje mu się:
Wygląda więc na to, że dla pierwszego podglądu obecnie nie działa. Jednak, jak spekulowało wiele osób, może to działać w przyszłym wydaniu.
źródło
docker ps
Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
Nie, nie jest to możliwe.
Docker potrzebuje wielu rzeczy, aby uruchomić kontenery:
Są to wszystkie funkcje jądra zaimplementowane w systemie Linux. Niestety większość z nich nie ma podobnej funkcji w systemie Windows, która mogłaby być używana jako zamiennik (ani w podsystemie Linux, który Microsoft zaimplementował w jądrze systemu Windows). Wszystkie te muszą być dostarczone przez system operacyjny.
źródło
chroot
, pamiętaj, że środowisko Ubuntu ma już inny katalog główny niż WIN32.Od aktualizacji Creator Update (opublikowanej publicznie 13 czerwca 2017 r.) Możesz uruchamiać natywny plik wykonywalny Windows bezpośrednio w WSL. Oznacza to, że jeśli już zainstalowałeś Docker dla Windows , możesz po prostu wywołać
docker
pliki binarne zainstalowane podC:\Program Files
. Ponieważ kończą.exe
się najłatwiejszą opcją jest tworzenie aliasów..bashrc
Powinno działać coś takiego :To tworzy aliasy dla wszystkich plików w
DOCKER_BIN
katalogu:Jedno zastrzeżenie: pojawi się komunikat o błędzie „ Nie można przetłumaczyć bieżącego katalogu roboczego ”, jeśli jest uruchamiany z katalogu Linux. Wystarczy
cd
do katalogu Windows (np./mnt/c/Users/YourUsername
) I powinieneś być dobry.źródło
docker
plik binarny Windows i po prostu robisz to za pomocą powłoki Linux. Nie jestem pewien, czy jest na to dobry sposób.Po Docker 1.12 jest zwolniony, a klient Linux Docker oddziela się, powinieneś być w stanie uruchomić Döcker klienta w systemie Windows 10 bash.
Może to nie wydawać się dużo, biorąc pod uwagę, że masz klienta Docker dla systemu Windows, ale jest to przydatne, jeśli masz łańcuchy narzędzi dla systemu Linux, które zawierają okno dokowane dla jego funkcji po stronie klienta.
źródło
W Windows 10 wersja 1607 kompilacja 1493.10 możesz z powodzeniem zainstalować go na Ubuntu Bash, ale to nie działa :(
Prosta „wersja dokera” powie ci:
Jeśli następnie uruchomisz „sudo docker -d”, pojawia się następujący błąd:
Jest to zdecydowanie korek od strony uderzenia.
Niemniej jednak możesz zainstalować Docker dla Windows i działa to jak urok, możesz oczywiście wdrożyć serwery Linux i wszystko, czego potrzebujesz.
źródło
Według stanu na wrzesień 2016 r.
Wszystkie obecne implementacje Dockera w systemie Windows używają wirtualizacji, Docker 1.12 używa hiperwizora w systemie Windows, co eliminuje przewagę konteneryzacji nad wirtualizacją.
Docker potrzebuje czegoś więcej niż tylko korzystania z wywołań systemu Linux.
Potrzebuje grup kontroli procesu (cgroups), systemu plików, który można ustawiać jeden na drugim (aufs), a także innych systemów opartych na Linuksie poza jądrem.
Ani grupy, ani auf nie są natywnie w jądrze systemu Windows 10.
Istnieje implementacja Windows Server 2016 tutaj: https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server .. ale to uruchomi tylko niektóre usługi Windows, np. IIS, a nie Ubuntu
źródło
Docker obecnie nie działa w bieżącej kompilacji (14316) - przy założeniu, że można go zainstalować.
źródło
Od: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/
źródło