MacBook z procesorem serii M a Docker
Krzysztof Lobermajer
Symfony Developer Accesto.Fan czystego kodu oraz prostych rozwiązań. Gdy nie programuje zgłębia tajniki alternatywnych metod parzenia kawy.
Uruchamianie Dockera na MacBooku to częsty problem wielu programistów. W wielu przypadkach działało to tak źle, że zmuszeni byliśmy szukać innych rozwiązań. Zapewne są też osoby, które zdecydowały się zastąpić swoje MacBooki komputerami z systemem Linux, albo przestały z nich korzystać do realizacji pewnych zadań. Jednak w końcu pojawiło się rozwiązanie tego problemu. Okazało się, że wystarczyła… zmiana procesora.
Większość z Was już wie, że Apple wprowadziło własne procesory serii M - a dlaczego i jak są korzyści z tego dla użytkowników, to można posłuchać w rozmowie przedstawicieli INNERGO Apple Authorised Enterprise Reseller - który zastosowano w komputerach Mac i MacBook, a także w iPadach Pro i Air.
MacBook i Docker
Należę do tych, którzy muszą korzystać z Dockera i nie chcieli zrezygnować z MacBooka. Szukałem rozwiązania - chętnych, którzy jeszcze pracują na MacBookach z Intelem zapraszam do zapoznania się z moim podejściem na przyspieszenie Dockera.
Moją ostateczną decyzją na 2021 było użycie zewnętrznego VPS, choć podejście z Mutagenem wydawało się obiecujące. Od tego czasu zmieniłem kilka rzeczy, między innymi VPS, ale co najważniejsze to zmieniłem… MacBooka Pro na nowy model. Z procesorem Apple M1.
Pewni jesteście ciekawi jak to wpłynęło na szybkość działania Dockera? Zapraszam do dalszej części artykułu. A poniżej możecie zobaczyć zmiany jakie wprowadziłem w "moim" środowisku pracy.
Docker na MacBooka Pro z Apple M1
Nie ma wątpliwości, że MacBook z nowym chipem Apple M1 Pro z architekturą ARM to bardzo potężna maszyna. Od razu poczujesz różnicę, w każdym aspekcie. Możecie poczytać o tym w artykule Krzysztofa, który „przesiadł się” na MacBook Pro 16 z M1 Max.
Mój nowy MacBook jest szybki, cichy i nie nagrzewa się nawet przy dużym obciążeniu. Ale dla mnie najważniejsze była odpowiedź na pytanie "Ale co z Dockerem?" i czy w końcu mogę "normalnie" pracować na "maku" i Dockerze. Aby udzielić odpowiedzi to przeprowadziłem test w oparciu o tą samą metodę testowania, którą możecie poznać w moim artykule na blogu Accesto.
Docker dla komputerów Mac ma pewne ustawienia, które mogą wpływać na ogólną wydajność. Wiąże się to z alokacją zasobów. Na przykład możesz przydzielić 4 procesory i 8 GB pamięci RAM lub zwiększyć tę liczbę w zależności od potrzeb. Użyłem ustawień widocznych poniżej.
Budowanie obrazów
Jak już zapewne wiecie, problem z wydajnością Dockera na Macu jest związany z współdzielonym systemem plików. Zacznijmy więc od czegoś, co nie powinno tak bardzo od tego zależeć - budowaniu nowych obrazów.
Jak widać różnica jest ogromna. Obraz Dockera został zbudowany w zaledwie siedem minut na MacBooku Pro z M1, co było nawet lepsze niż czas budowania na moim nowym VPS. Nie jest to zaskakujące, bo dałem Dockerowi całkiem sporo zasobów. Ale pokazuje również, że jeśli nie ma zbyt wielu operacji dyskowych I/O, wydajność jest całkiem dobra. Co ważne, mój MacBook nie zwolnił podczas tego procesu. Mogłem go normalnie używać i nie osiągnął nawet 60 stopni Celsjusza.
Na tej podstawie można sądzić, że w końcu Docker będzie działał poprawnie i szybko na MacBooku, ale czy tak jest?
Apple M1 i obsługa żądań
Sprawdziłem, jak szybko kontenery Docker poradzą sobie z żądaniami w Apple Silicon M1. Tym razem nie bawiłem się zbytnio konfiguracją wolumenów, pod uwagę wziąłem tylko "cached" i "delegated". Skonfigurowałem też Mutagen, bo ostatnio był bardzo obiecujący.
Ustawienie wolumenów nie ma zbyt dużego wpływu na wydajność. Działa nieco lepiej w porównaniu do mojego starego MacBooka, ale nadal szybkość działania nie jest zadowalająca. Ciekawe jest to, jak na wydajność wpływa użycie Mutagena. Wygląda na to, że jeśli usuniemy operacje dyskowe I/O z równania, w końcu będziemy mieli konfigurację, która może działać bardzo dobrze, może nawet lepiej niż na Linuksie.
Czy Docker Desktop z Mutagenem jest nadal wolniejszy niż uruchamianie Dockera na VPS?
VPS był ostatecznym zwycięzcą moich poprzednich testów. Ma wiele zalet i był najszybszy. Uruchomienie Dockera z Mutagenem bezpośrednio na MacBooku było alternatywnym rozwiązaniem, które oceniłem bardzo dobrze. Wciąż był nieco wolniejszy i co najważniejsze bardzo zasobożerny, ale miał szansę konkurować z serwerami opartymi na Linuksie.
Ponieważ mam nowy VPS, z podobną liczbą rdzeni procesora i podobną ilością pamięci RAM, które przydzieliłem w Dockerze na Macu, sprawdziłem, jak poradzi sobie MacBook. Wyniki są całkiem w porządku, jest szybszy niż mój poprzedni VPS, ale o dziwo jest znacznie wolniejszy niż Docker na MacBooku Pro z chipem Apple M1 Pro i mutagenem.
Docker i MacBook Pro z procesorem serii M - czy warto?
Szczerze mówiąc, kupując nowego MacBooka nie myślałem o uruchomieniu na nim Dockera. Założyłem, że moja konfiguracja na VPS jest wystarczająco dobra i nadal mogę z niej korzystać. Po tych wszystkich testach i kontrolach jestem naprawdę zaskoczony. Oczywiście VPS ma pewne zalety (może być używany na wielu urządzeniach, może być używany do innych celów itp.), ale jest wolniejszy i wymaga stałego połączenia z Internetem.
Moja decyzja na 2022 to: Docker na MacBooku Pro M1 z Mutagenem.
Nie wiem, jak Docker na Macu z Mutagenem sprawdzi się w dłuższej perspektywie, ale nie spodziewam się żadnych problemów, ponieważ na co dzień używam Mutagenu do synchronizacji plików z VPS. Więc na pewno spróbuję.
Jest jeszcze jeden aspekt wart rozważenia, pieniądze. Nowe komputery Apple nie są tanie - na najtańszą wersję MacBooka Pro 14” trzeba wydać ponad 11 tys zł (wg cen na innego.store - dla developerów przewidziane bonusy, zapytaj ). Mój VPS kosztuje 23 zł miesięcznie, więc koszt nowego MacBooka to równowartość około 40 lat korzystania z VPS - gdy tak do tego podejść :)
Biorąc to pod uwagę, radzę najpierw sprawdzić jak szybki jest Docker z Mutagenem na obecnym MacBooku i jeśli nie jest wystarczająco szybki, ale Mac nadal jest dobry i jesteś z niego całkowicie zadowolony (poza wydajnością Dockera), użyj VPS.
Skorzystaj z doświadczenia Accesto z Dockerem
Wydajność można również poprawić poprzez optymalizację procesu budowania obrazów czy optymalizację konfiguracji kontenerów.
Wydaliśmy darmowy ebook - Docker Deep Dive. Stosując techniki opisane w ebooku, zoptymalizowaliśmy czas budowania od 17 do 5 minut na VPS i do ~2 minut na większym serwerze dedykowanym, którego używamy do naszych zadań CI. Więc jeśli masz problemy z czasem kompilacji, zdecydowanie radzę pobrać ebooka i przyjrzeć się potencjalnym zmianom.
Jeżeli chcesz się zapoznać bardziej szczegółowo z moimi doświadczeniami z Dockerem i MacBookiem z procesorem Apple M1 to zapraszam na blog accesto.