tar i curl na Windows

tar i curl na Windows

przez -
4 1000
Microsoft

Microsoft Virtualization ogłosiło że począwszy od dzisiaj narzędzia tar i curl są dostępne w linii poleceń dla obrazów kontenerów bazujących na Windows Nano Server jak i Windows Server Core. Jeśli nie znasz tych narzędzi, zapoznaj się z ich opisem:

tar: Narzędzie wiersza poleceń, które umożliwia użytkownikowi operacje na archiwach plików (pakowanie, rozpakowywanie archiwów typu .tar.gz czy też .zip). Implementacja dostarczana wraz z Windows bazuje na bibliotece libarchive.
curl: Kolejne narzędzie wiersza poleceń, które umożliwia przesyłanie plików do i z serwerów (dzięki czemu można pobrać plik z internetu) używając całej gamy wszelakich protokołów internetowych – ich listę możesz sprawdzić tu.

Teraz już nie tylko będzie można ściągać pliki z sieci w powłoce cmd.exe, ale również będziecie w stanie rozpakować pliki w formatach innych niż .zip (na przykład .tar.gz). PowerShell już oferuje podobną do polecenia curl funkcjonalność (kryjącą się pod poleceniem Invoke-RestMethod) jak i też własne narzędzia do wypakowywania plików z archiwów, ale twórcy Windowsa świadomi są że mogą istnieć sytuacje w których PowerShell nie jest łatwo dostępny lub użytkownik po prostu chce pozostać przy gołym cmd.exe.

W Kontenerach

Teraz, kiedy te narzędzia dostępne są wraz z systemem, nie trzeba się już przejmować osobnym obrazem kontenera przygotowując obraz dla aplikacji bazującej na nanoserver. Wystarczy wywołać te narzędzia w ten sposób:

Dlaczego w ogóle dodano te narzędzia?

Microsoft oferuje dwa podstawowe obrazy do windowsowych kontenerów: windowsservercore i nanoserver. Obraz servercore jest większy z tych dwóch i ma wsparcie dla takich rzeczy, jak pełny framework .NET ale… jego rozmiar to ponad 5Gb. Na przeciwległym końcu spektrum znajduje się nanoserver, który jest zbudowany tak, aby był lekki i wykorzystywał pamięć minimalnie jak tylko się da. Ma on obsługę .NET core, ale przy jego budowie skupiono się głównie na minimalizacji rozmiar obrazu. Wyrzucono wszystkie komponenty, które według twórców nie miały krytycznego znaczenia dla obrazu kontenera.

PowerShell był jednym z komponentów, który został wytypowany do usunięcia z obrazu nano serwera. Jego objętość to aż 56 MB (biorąc pod uwagę, że całkowity rozmiar obrazu nano serwera to około 400 Mb – usunięcie PowerShell to spora oszczędność!). Jednak konsekwencja usunięcia PowerShell oznaczała, że nie było możliwości ściągnięcia doń jakiegokolwiek archiwum i rozpakowania go z wnętrza kontenera.

Jeśli macie doświadczenie w pisaniu plików dockerowych, będziecie wiedzieli, że powszechną praktyką jest ściąganie wszystkich pakietów i instalacja ich. Nie mając PowerShell użytkownicy musieli by polegać na użyciu oddzielnego obrazu z PowerShell jako obrazu “konstruktora”, aby zbudować finalny obraz z właściwą aplikacją. Zmuszało by to ich do ściągania większego obrazu servercore tylko po to by zbudować obraz mający bazować na nano serwerze.

Problem ten rozwiązano przez dodanie curl i tar. Dzięki temu – również Ty możesz wywoływać te narzędzia w obrazów serwujących obrazy.