Docker - konteneryzacja aplikacji. Użycie Dockera w praktyce.
kontakt
Tag
>
Docker - platforma umożliwiająca konteneryzację aplikacji
docker

Docker - platforma umożliwiająca konteneryzację aplikacji

Docker to rozwiązanie typu PaaS. Wszedł przebojem na rynek w 2013 roku i stał się najpopularniejszym rozwiązaniem obecnie do konteneryzacji aplikacji. Umożliwia zamrożenie stanu aplikacji za pomocą serii komend i odtworzenie jej na dowolnym innym sprzęcie, który posiada zainstalowanego Dockera.

docker platforma do konteneryzacji

Docker posiada prosty język deklaratywny

Większość osób wykorzystuje Dockera do odtwarzania wersji swojego oprogramowania w tym samym stanie na dowolnym innym komputerze. Obrazy dockerowe tworzy się za pomocą plików Dockerfile. Pliki te wykorzystują takie instrukcje jak:

  • FROM
  • RUN
  • CMD
  • ENTRYPOINT
  • VOLUME
  • WORKDIR
  • COPY
  • EXPOSE
FROM python:3.9

ENV PYTHONUNBUFFERED 1

RUN apt-get update

# Pozwala dockerowi na zapamiętywanie zależności w naszej aplikacji
COPY ./requirements.txt requirements.txt
COPY ./requirements requirements
RUN pip install -r requirements.txt

# Dodaj naszą aplikację do kontenera
COPY . code
WORKDIR code
RUN python manage.py collectstatic --noinput

CMD ["sh", "-c", "gunicorn app.wsgi -b :8000 --log-file -"]

To tylko niektóre z nich i najbardziej popularne. Dzięki nim możemy pobrać inny kontener stworzony przez innego użytkownika wykorzystując FROM, skopiować dane za pomocą COPY z lokalnego źródła plików czyli własnego komputera, wykonać serię komend za pomocą RUN. Każda z komend stworzy inkrementacyjnie kolejne warstwy kontenera dockerowego. Najciekawsze jest to, że przy ponownym budowaniu kontenera i zmianie komendy RUN, cała poprzednia seria komend jest odpowiednio zapamiętana. Dzięki temu po drobnych zmianach kontenery potrafią się budować naprawdę szybko. Na samym końcu możemy ustalić CMD który będzie uruchamiany podczas startu kontenera i tym może być np. skrypt uruchamiający serwer webowy.

Wiersz poleceń Docker pozwala na zaawansowane operacje na kontenerach

Za pomocą interfejsu Docker możemy wykonać operacje takie jak budowanie kontenera, czy też uruchomienie go. Możemy zalogować się do innych dostarczycieli usług Docker i wypchnąć do nich zbudowany kontener. Możemy wersjonować nasze kontenery tak by w krytycznym momencie móc powrócić do jego starszej wersji.

docker login
docker build -t [username/]<image-name>[:tag] <dockerfile-path>
docker push [registry/][username/]<image-name>[:tag]

Całość tego rozwiązania pozwala na nowoczesne budowanie oprogramowania i szybką wymianę najlepszych wzorców. Większość dostarczycieli usług open-source posiada gotowe zoptymalizowane wersje swojego oprogramowania w postaci plików Dockerfile, dzięki temu możemy szybko sprawdzić je w sposób wyizolowany i niezależny od naszego oprogramowania. Trzeba pamiętać że kontenery dockerowe są od siebie niezależne i posiadają niezależny od siebie system plików. Jeżeli na to nie pozwolimy to nie dzielą ze sobą żadnych plików. Unikamy dzięki temu konfliktów wersji i możemy się skupić na tworzeniu oprogramowania wysokiej jakości.