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
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 Python’ie, 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.