[vc_row][vc_column][vc_column_text]Jestem pewien, że każdy, kto ma coś wspólnego z tworzeniem kodu, słyszał o Dockerze. Jego popularność nie jest przypadkowa. To przydatne narzędzie, które zmieniło sposób, w jaki ludzie rozwijają swoje aplikacje. Dzięki Dockerowi testowanie, wdrażanie i skalowanie aplikacji stało się znacznie prostsze.Wyobraźmy sobie sytuację, w której stworzyliśmy aplikację z wieloma wymaganiami wstępnymi, takimi jak dodatkowe narzędzia i pakiety. Jeśli chcemy, aby ktoś uruchomił nasz projekt, musimy dostarczyć kod i opis, jak przygotować system, aby był zgodny z kodem. Osoba, która chce go uruchomić, musi zainstalować wszystkie te zależności. Nie trzeba dodawać, że w takich sytuacjach często pojawiają się różne błędy i niezgodności. Docker rozwiązuje ten problem, ponieważ pozwala dostarczyć aplikację wraz ze wszystkimi niezbędnymi zależnościami, dzięki czemu każdy może łatwo uruchomić Twoją aplikację.W tym artykule chcę przedstawić podstawy Dockera i pokazać, jak go używać w bardzo prosty sposób. Mam nadzieję, że wszystkie zebrane tutaj informacje i wskazówki przekonają Cię do korzystania z Dockera w Twojej aplikacji.
Czym jest Docker?
Docker pozwala tworzyć przenośny, lekki kontener, który zawiera program i wszystkie jego zależności, takie jak biblioteki, pliki konfiguracyjne, środowisko, bazy danych, pakiety itp. Kontener może być udostępniony innym osobom, które mogą go uruchomić na dowolnym systemie operacyjnym, takim jak Linux, Windows, macOS. Docker jest często porównywany do maszyn wirtualnych, ale istnieje bardzo ważna różnica między nimi. Maszyny wirtualne mają własny system operacyjny, co wyjaśnia, dlaczego maszyny wirtualne, zwłaszcza gdy uruchamiamy wiele z nich na jednym komputerze, mogą być dużym obciążeniem. Dodatkowo, wraz z konfiguracją nowej maszyny wirtualnej, wszystkie wymagane biblioteki i narzędzia muszą zostać zainstalowane. Docker rozwiązuje ten problem, wykorzystując system operacyjny komputera i izolując niektóre zasoby, aby stworzyć odizolowane środowisko.
Główne zalety korzystania z Dockera:
- możesz łatwo testować różne wersje oprogramowania
- możesz dystrybuować swoją aplikację wraz ze wszystkimi wymaganiami systemowymi
- możesz sprawdzić, czy Twoja aplikacja działa na wszystkich systemach operacyjnych
- docker tworzy lekkie i odizolowane środowisko uruchomieniowe
Dowiedz się więcej o innych zastosowaniach Dockera.
Obrazy Dockera
Obraz Dockera to plik tylko do odczytu zawierający zestaw instrukcji do tworzenia kontenera Dockera. Możesz myśleć o obrazach Dockera jak o płycie CD zawierającej informacje o tym, jak zainstalować grę, ale nie jest to sama gra. To tylko szablon, zestaw instrukcji, jak to zrobić. Jeśli chcesz, możesz stworzyć własny obraz lub skorzystać z istniejących, które są opublikowane na stronie https://hub.docker.com/. Aby stworzyć własny obraz, musisz napisać plik o nazwie Dockerfile. Co jest niesamowite w obrazach Dockera, to fakt, że są one zbudowane z warstw. Oznacza to, że możesz użyć innych obrazów, dodać wszystkie wymagania pasujące do Twoich potrzeb i voilà! Nowy obraz Dockera został stworzony. Chcesz zmienić swój obraz? Po prostu dodaj wszystkie zmiany do pliku Dockerfile i gotowe - bułka z masłem!
Kontenery Dockera
Kontenery Dockera są tworzone na podstawie obrazów Dockera. Dzięki kontenerom możemy stworzyć odizolowane i samowystarczalne środowisko, w którym na przykład możemy uruchomić aplikację, stworzyć bazę danych lub hostować stronę internetową. Wszystkie kontenery Dockera działają niezależnie - dlatego możliwe jest przechowywanie kilku kontenerów w jednym systemie operacyjnym. Możliwa jest również komunikacja między kontenerami. Jedyne, co musisz zrobić, to stworzyć odpowiednie połączenie sieciowe między kontenerami.Aby lepiej zrozumieć różnicę między obrazami a kontenerami, spójrzmy na poniższy przykład.Na początek chcemy stworzyć nowy obraz. W tym przykładzie będzie on oparty na obrazie ubuntu:20.04, a my uruchomimy polecenie, które pokazuje informacje o środowisku.

Zbudujmy nasz obraz:

Aby wyświetlić wszystkie zbudowane obrazy, użyj polecenia docker images:

Widzisz nasz obraz o nazwie my_ubuntu_20_image, który został utworzony 3 minuty temu i waży 72,8 MB. Następnie uruchommy nasz obraz Dockera, aby stworzyć kontener Dockera i zobaczyć wynik polecenia cat /etc/lsb-release. Aby to zrobić, użyj polecenia docker run my_ubuntu_20_image.

Aby wyświetlić wszystkie utworzone kontenery, użyj polecenia docker ps -a.

Prosty projekt Python z bibliotekami zewnętrznymi
W tym rozdziale chcę pokazać, jak skonteneryzować prostą aplikację Python. Wierzę, że ten praktyczny przykład pokaże Ci, że korzystanie z Dockera jest proste. Zacznijmy od przykładu kodu w Pythonie. Przygotowałem podstawowy skrypt main.py, który wywołuje stronę https://aqicn.org i przy użyciu dodatkowej biblioteki BeautifulSoup odczytuje informacje o jakości powietrza w Warszawie.

Jak wspomniałem wcześniej, ten skrypt używa dodatkowych bibliotek. Zbierzmy wszystkie wymagania w pliku requirements.txt.

Wyobraź sobie, że chcesz wysłać tę aplikację swojemu szefowi. Co musi zrobić, aby ją uruchomić?
- określić i zainstalować odpowiednią wersję Pythona
- zainstalować wszystkie wymagania z pliku requirements.txt
- zapytać Cię, jak uruchomić Twój skrypt (może musi przekazać jakieś dodatkowe argumenty)
Zdezorientowany? Pokażę Ci, jak ułatwić życie dzięki Dockerowi.
Konteneryzacja aplikacji Python
Jedyne, co musisz zrobić, to pobrać Dockera (instrukcja dostępna tutaj: https://docs.docker.com/desktop/#download-and-install) i napisać plik Dockerfile.

Dockerfile używa obrazu python:3.8, dodaje pliki main.py i requirements.txt do katalogu Dockera, instaluje wszystkie wymagania i uruchamia skrypt. Wróćmy do historii. Co trzeba zrobić, aby uruchomić Twój skonteneryzowany skrypt?
- zainstalować Dockera, jeśli to konieczne
- zbudować obraz Dockera i uruchomić go

Tak, to wszystko!Jeśli chciałbyś poprawić jakość swojego kodu w Pythonie, kliknij tutaj.
Podsumowanie
Docker to bardzo popularne narzędzie w dzisiejszych czasach i każdy programista powinien wiedzieć, jak go używać. Jak udowodniono w artykule, korzystanie z Dockera nie jest trudne. Aplikacje rozwijane z użyciem Dockera są bardziej przenośne, łatwiejsze do testowania i skalowalne. Mam nadzieję, że ten artykuł zainspirował Cię do konteneryzacji Twoich aplikacji.

[/vc_column_text][/vc_column][/vc_row]



