Docker #3: Konfiguracja w Python’ie – pydocker​

Jeżeli z jakiegoś powodu chcesz generować konfigurację Dockera, zamiast używać wartości w konfigu, polecam użycie biblioteki pydocker.

Docker i pydocker

Docker


W poprzednim artykule z serii o Dockerach, przedstawiłem Dockerfile. Jest to bardzo użyteczne narzędzie do konfiguracji Dockera, lecz może być zbyt sztywne. Oczywiście możesz je edytować i na tej podstawie budować nowe kontenery, le dlaczego tego nie zautomatyzować? Jak zawsze z pomocą przychodzi Python. W tym wypadku użyjemy biblioteki pydocker, dzięki której możemy tworzyć konfigurację kontenerów bezpośrednio w Pythonie, a tym samym budować Python’em kontenery i je uruchamiać – pełna automatyzacja.

Instalacja dokera

Przed rozpoczęciem instalacji pydocker’a, zainstaluj też dockera:

Jednym z najprostszych sposobów instalacji biblioteki pydocker jest użycie programu pip:

pip install pydocker

Konfiguracja dockera​

Będę bazował na konfiguracji z Dockerfile z poprzedniej cześci serii o Dockerach.

Zacznijmy jednak od zaciągnięcia z biblioteki pydocker klasy DockerFile. Następnie za jej pomocą możemy utworzyć obiekt, inicjalizując dwa argumenty:
– base_img – na jakim obrazie systemu będzie bazował
– name – jaką będzie miał nazwę – musi ona składać się z {nazwy_lokalnej}/{system_na_jakim_bazuje}:{własny_numer_wersji}

from pydocker import DockerFile
docker = DockerFile(base_img='ubuntu:20.04', name='test/ubuntu:0.0.1')

Konfigurację wprowadzamy za pomocą metody RUN_bash_script tworzącej i wywołującej skrypt bash’owy. W metodzie tej uzupełniamy dwa argumenty, gdzie pierwszy z nich to ścieżka do pliku, jaki ma zostać utworzony i uruchomiony przy starcie kontenera, zaś drugi to zawartość tego pliku:

from pydocker import DockerFile
docker = DockerFile(base_img='ubuntu:20.04', name='test/ubuntu:0.0.1')
docker.RUN_bash_script('/opt/set_repo.sh', r'''
apt-get -y update
apt-get -y upgrade
apt-get install -y python3.8
apt-get install -y python3-pip
pip3 install pytest
''')

Budowanie dockera

Do zbudowania kontenera wystarczy użycie metody buid_img() z wcześniej utworzonego obiektu docker

from pydocker import DockerFile
docker = DockerFile(base_img='ubuntu:20.04', name='test/ubuntu:0.0.1')
docker.RUN_bash_script('/opt/set_repo.sh', r'''
apt-get -y update
apt-get -y upgrade
apt-get install -y python3.8
apt-get install -y python3-pip
pip3 install pytest
''')
docker.build_img()

Uruchomienie skryptu

Całość zapisałem do pliku docker.py, który uruchomię przy pomocy Python’a, a następnie sprawdzę, czy obraz Docker’a został stworzony:

python docker.py
docker images

I tak udało się utworzyć obraz świeżo skonfigurowanego Docker’a za pomocą biblioteki Pythona:

REPOSITORY      TAG      IMAGE ID        CREATED             SIZE
test/ubuntu     0.0.1    796577c88830    6 seconds ago       401MB

W kolejnej części serii o Docker’ach zaprezentuję, jak możemy uruchamiać testy na skonfigurowanym kontenerze.

close

Newsletter