fbpx ...

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.

ninjaletter

A może Ninjaletter?

Chcesz wiedzieć, co słychać w C++ i nie tylko? Zapisz się na Ninjaletter i otrzymuj od nas co miesiąc dawkę wartościowych treści o C++ i zadania rekrutacyjne. Do tego dorzucamy darmowe materiały, spoilery o nowych kursach, specjalne promocje dla ninjaletterowiczów i wiele, wiele innych. To co, skusisz się?

Łukasz Ziobroń

Łukasz Ziobroń

Zmieniam ludzi w prawdziwych programistów. W nauczaniu stosuję grywalizację, andragogikę i neurodydaktykę.

Najnowsze artykuły

docker

Narzędzia programisty: Docker w skrócie

Co wspólnego ze sobą mają ogry, cebula i Docker? Poznaj podstawy Dockera i dowiedz się, jak może przyspieszyć Twoją codzienną pracę. Odkryj, dlaczego warto go mieć w swoim arsenale programisty.

Czytaj »
good programming practices

Good programming practices – Coding Dojo

Training in a form of Coding Dojo. Participants start with a code review of a small application. They note down their comments. After that, the trainer presents bad and good programming practices. Participants discuss what can be applied in a reviewed code and start fixing it in a form of Coding Dojo.

Czytaj »

Popular C++ Idioms – Coding Dojo

The training starts with a code review of a small application (pre-work). Participants note their thought and discuss their findings in groups. Then popular C++ idioms are presented (the concept and some code) – about 15-20 minutes each. After that participants need to use some of the idioms in a reviewed application code.

Czytaj »
performance optimisations

Performance optimisations

This training is about writing more robust C++ code and algorithms with the help of CPU caches and a compiler. Benchmarking tools are used to show performance gains.

Czytaj »
ninjaletter

Już uciekasz?

Zanim to zrobisz, zapisz się na Ninjaletter, aby wiedzieć, co piszczy w C++. 

Informujemy, iż w celu realizacji usług dostępnych w naszym serwisie, optymalizacji jej treści, dostosowania strony do Państwa indywidualnych potrzeb oraz wyświetlania, personalizacji i mierzenia skuteczności reklam w ramach zewnętrznych sieci reklamowych korzystamy z informacji zapisanych za pomocą plików cookies na urządzeniach końcowych użytkowników. Pliki cookies można kontrolować za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z naszego serwisu, bez zmiany ustawień przeglądarki internetowej oznacza, iż użytkownik akceptuje stosowanie plików cookies. Więcej informacji zawartych jest w polityce prywatności serwisu.