Usare le Docker Engine API con PHP

Le Docker Engine API consentono di interagire con Docker a livello programmatico. Utilizzando PHP, possiamo sfruttare queste API per gestire container, immagini e altro.

Prerequisiti

  • Docker installato e in esecuzione
  • PHP (>=7.4) installato
  • Composer installato

Installazione dell'SDK

Il modo più semplice per interagire con Docker in PHP è usare l'SDK docker-php. Installiamolo con Composer:

composer require docker-php/docker-php

Configurazione della Connessione

Creiamo una connessione con il demone Docker:


require 'vendor/autoload.php';

use Docker\Docker;
use Docker\API\Client;
use Http\Adapter\Guzzle6\Client as GuzzleClient;

$docker = Docker::createWithHttpClient(GuzzleClient::createWithConfig([
    'base_uri' => 'unix:///var/run/docker.sock',
]));
        

Se usiamo Windows, dobbiamo connetterci tramite TCP invece di UNIX socket:


$docker = Docker::createWithHttpClient(GuzzleClient::createWithConfig([
    'base_uri' => 'tcp://127.0.0.1:2375',
]));
        

Gestire i Container

Elencare i Container


$containerManager = $docker->containerList();
foreach ($containerManager as $container) {
    echo "ID: " . $container->getId() . "\n";
}
        

Creare un Container


use Docker\API\Model\ContainersCreatePostBody;

$containerConfig = new ContainersCreatePostBody();
$containerConfig->setImage('nginx');
$containerConfig->setCmd(['echo', 'Hello from Docker']);

$container = $docker->containerCreate($containerConfig);
$docker->containerStart($container->getId());
        

Conclusione

In questo articolo abbiamo visto come installare e configurare l'SDK per interagire con Docker Engine tramite PHP. Da qui, possiamo esplorare funzionalità più avanzate come gestione delle immagini, volumi e reti.

Torna su