Python program na ovládání Dockeru pomocí API

3. dubna 2024

Lang: cs en de es

Potřebujete ovládat Docker? K tomu se výborně dá použít API, které je dostupné například přes unixový socket. Jako programovací jazyk je možno použít například Python, což je skriptovací programovací jazyk, takže díky němu můžete rychle vyvinout potřebnou funkcionalitu. Navíc pro Python existuje knihovna, která implementuje API Dockeru, takže si ušetříte práci. Jak na to? Je to jednoduché....Popíši vám to v tomto návodu.

Docker můžete nejen ovládat z konzole nebo pomocí nějaké orchestračního nástroje, ale existuje i API. Aplication Programing Interface) je způsob (rozhraní), jak pomocí vašeho programu ovládat jinou aplikaci.

Proč použít Docker API?

Ovládat Docker pomocí API je užitečné například v těchto situacích:

  1. Automatizace a integrace: Integrace Docker API do existujících nástrojů nebo workflow, umožňuje automatizaci procesů, což zvýší efektivitu práce. To může být zejména užitečné v prostředích DevOps, kdy chcete provádět rychlý kontinuální vývoj aplikace (CI/CD).
  2. Vlastní nástroje a rozhraní: Použití Docker API umožňuje vytvářet vlastní uživatelská rozhraní nebo nástroje, které lépe vyhovují konkrétním potřebám nebo procesům organizace.
  3. Orchestrace a správa kontejnerů: Docker API umožňuje programově řídit spouštění, zastavování a správu kontejnerů. To je zásadní pro řízení velkého množství kontejnerů. Nástroje, které řeší takovou úlohu se nazývají orchestrátory. Jsou to například Kubernetes, Docker Swarm a další.
  4. Monitorování a správa zdrojů: Pomocí Docker API můžete sledovat stav kontejnerů, sbírat metriky a informace o využití zdrojů, což může být užitečné pro správu výkonu a škálování aplikací.
  5. Integrace s cloudovými službami a dalšími technologiemi: Docker API umožňuje integraci s různými cloudovými službami a dalšími technologiemi, což může zlepšit flexibilitu a možnosti nasazení aplikací.

Použití v praxi

Představte si, že máte aplikaci, kterou potřebujete spouštět pro vykonávání dávkových úloh a každé spuštění má mít jiné parametry nebo jiná vstupní data. Zároveň kvůli výkonu nebo spíš hlídání zátěže potřebujete spouštění těchto služeb řídit. V této situaci si můžete napsat vlastní program, který bude potřebná data sbírat a dle potřeby spouštět docker kontejnery s požadovanými parametry.

Python program

Zde je základní ukázka kódu jak použít python a Docker API. Tato aplikace se připojí na Docker API a vypíše všechny běžící kontejnery:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import docker

client = docker.from_env()

c=client.containers.list()
print(c)
for i in c:
    print(i)
    print(i.name)

Zdrojový kód

Kompletní ukázka, kterou je možné pustit v docker kontejneru je zde: https://github.com/josefjebavy/python-docker-example

Build image s ukázkovou aplikací:

docker build -t python-docker-app .

Ruční spuštění aplikace z konzole:
docker run -it --rm -v $PWD:/usr/src/app -v /var/run/docker.sock:/var/run/docker.sock --name python-docker-app-run python-docker-app /bin/bash

Nejjednodušší je spuštění projektu pomocí docker-compose, který provede i počáteční buildu docker image s aplikací:
docker-compose up

Nejklíčovější je aplikaci umožnit přístup na socket docker démona, díky čemuž je možno celý docker ovládat.

Dokumentace

Dokumentace Python knihovny pro ovladání dockeru pomoci API: https://docker-py.readthedocs.io/en/stable/

Video ukázka

Kompletní videoukázka jak připravit a pustit aplikaci v jazyce Python, která bude vypisovat seznam všech běžících docker kontejnerů. A další způsoby použití Docker API:

Články na podobné téma

Jak použít aplikaci MailCatcher pro testování emailů
Návod: Python OpenAI API
Vytvoření WebSocket webové aplikace a nastavení proxy
Řízení projektů: Agilní vývoj softwaru
Jak provozovat staré PHP aplikace
Co by měl umět dobrý programátor
Programovací jazyk Rust
NodeJS: vývoj, konfigurace serveru
Nette security bug CVE-2020-15227
Jak porovnat dvě stejné databáze?
REST API: API platform
Vlastní web a mail hosting se softwarem ISP Config
Programovní v SQL: PostgreSQL, MySQL/MariaDB
HTTPS: zabezpečený web
NoSQL databáze Mongo DB
Připojení k Microsoft SQL Serveru z Linuxu
Co je pracovní náplň programátora
Lokalizace aplikací v jazyce Python
Jaký mail a web hosting vybrat
How to make wireless low power Arduino
Digispark - Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Program Roulette
Vývoj pro procesory ARM s Arduino IDE
Wireless low power Arduino
Pyradio - Python program for receive Internet radio with text user inteface
UPS monitor pro Android
Bezdrátový bateriově napájený WiFi teploměr
Jak programovat WiFi procesor ESP8266
Comparison IQRF vs Wireless Arduino
Jakou platformu zvolit pro eshop? Například Prestashop
Development kits and gateways for wireless platform IQRF

OpenStreetMap a GPS trasy v mapě na webu
Quickplay
Java program pro přehledné monitorování záložních zdrojů
Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux - IQRF
Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
O programování a ruzné programy v jazyce Java, Python a dalších
Java program a applet Kalkulačka
Java program na výpočet kvadratické rovnice

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+