Docker to sprytne narzędzie, które może całkowicie zmienić sposób, w jaki pracujesz nad projektami. W tym artykule znajdziesz szybki przegląd tego, co warto o nim wiedzieć. Dowiesz się, dlaczego Docker jest tak popularny i jak może ułatwić Twoją pracę. To ogólny zarys, który pomoże ci zrozumieć, dlaczego Docker powinien znaleźć się na twojej liście narzędzi do opanowania.
Docker - niezgodność architektury
Nietypowo, zaczniemy od problemów z Dockerem, bo te mogą pojawić się już na samym początku… Podczas pracy z Dockerem, szczególnie na różnych systemach operacyjnych, mogą pojawić się pewne niespodzianki. Jednym z częstszych problemów jest niezgodność architektury między różnymi systemami. Na przykład, jeśli pracujesz na Macu i próbujesz użyć cache’u builda, może okazać się, że Docker widzi katalog build, ale nie zgadza mu się architektura. Dzieje się tak dlatego, że pliki są zbudowane na Macu, a teraz próbujesz ich użyć w innym środowisku.
W takiej sytuacji najlepiej usunąć stary katalog build, lub zmienić jego nazwę.
Cebula, ogry i wieloryb - co je łączy?
Cebula ma warstwy, ogry mają warstwy i Docker ma warstwy… 🐋
Podczas pracy z Dockerem, warto pamiętać, że każda zmiana w pliku Dockerfile, szczególnie w pierwszych krokach, może wpłynąć na cały proces budowania obrazu. Docker buduje obraz warstwowo – po każdej komendzie tworzy tzw. snapshot, który przechowuje na dysku. Jeśli zmienisz coś w jednym z wcześniejszych kroków, Docker będzie musiał przebudować wszystkie kolejne warstwy. To może spowolnić proces, ale ma też swoje zalety – jeśli nic nie zmienisz, Docker wykorzysta już zbudowane warstwy, co znacznie przyspiesza cały proces.
Ciekawostką jest to, że Docker tworzy te snapshoty po każdym kroku, co pozwala na szybkie przywracanie stanu, ale z drugiej strony zajmuje sporo miejsca na dysku. Dlatego warto regularnie przeglądać i usuwać niepotrzebne obrazy, żeby nie zaśmiecać dysku.
Testowanie na sterydach
Docker daje także możliwość przetestowania kodu na różnych kompilatorach bez zaśmiecania swojego głównego systemu. Możesz na przykład stworzyć różne obrazy z różnymi kompilatorami, takimi jak g++ czy clang, i sprawdzić, czy kod kompiluje się tak samo na obu. Dzięki temu masz pewność, że twój kod jest przenośny i zadziała w różnych środowiskach.
Jeśli zdecydujesz się uruchomić aplikację w Dockerze, możesz od razu odpalić tzw. entry point, czyli aplikację uruchamianą automatycznie po starcie kontenera. Możesz też przełączyć się na tryb interaktywny i mieć dostęp do pełnej konsoli Linuksa w obrębie kontenera, co jest bardzo przydatne, jeśli chcesz zarządzać pakietami lub sprawdzać szczegóły konfiguracji.
Kontenery w Visual Studio Code
Jeśli korzystasz z VS Code, istnieje wtyczka Dev Containers, która umożliwia otwieranie projektu bezpośrednio w kontenerze Docker. To znaczy, że wszystko, co robisz w VS Code, dzieje się wewnątrz kontenera – kompilatory, biblioteki, a nawet wtyczki muszą być zainstalowane w kontenerze. To świetne rozwiązanie, jeśli chcesz oddzielić swoje środowisko pracy od głównego systemu, ale pamiętaj, że wymaga to trochę dodatkowej konfiguracji.
Mapowanie: Twój katalog, Twoje zasady
Jednym z przydatnych trików w Dockerze jest mapowanie katalogów. Jeśli na przykład potrzebujesz używać kluczy SSH do autoryzacji na GitHubie, możesz zmapować swój lokalny katalog SSH do katalogu w kontenerze. Dzięki temu nie musisz tworzyć nowych kluczy za każdym razem, gdy pracujesz w nowym kontenerze. To samo dotyczy innych katalogów – możesz mapować dowolne katalogi, które są dla ciebie ważne, co znacznie ułatwia pracę i integrację kontenera z twoim systemem.
Czy warto spróbować?
Uważam, że tak. Na pierwszy rzut oka mogłoby wydawać się, że Docker jest dość skomplikowany, ale gdy już go opanujesz, odkryjesz, że daje niesamowitą swobodę działania. Pozwala na eksperymentowanie, testowanie i rozwijanie projektów w odizolowanym środowisku, co eliminuje wiele problemów związanych z różnicami między systemami. Jeśli jeszcze nie miałeś okazji spróbować, warto go przetestować – może się okazać, że to właśnie ten brakujący element, który ułatwi Ci codzienną pracę.
Jeśli chcesz dowiedzieć się nieco więcej o Dockerze to sprawdź nasz kurs z Narzędzi programisty 🔧 Dorzuciliśmy tam w formie bonusu materiał o wielorybie.