docker-php-client

Документація класу System

Опис

System - це клас для роботи з системними функціями Docker через API. Він надає методи для отримання інформації про систему Docker, перевірки автентифікації, моніторингу подій та управління системними ресурсами.

Простір імен

Sangezar\DockerClient\Api

Успадкування

Клас System успадковується від AbstractApi та реалізує інтерфейс SystemInterface.

Константи

Типи подій

public const EVENT_TYPE_CONTAINER = 'container';
public const EVENT_TYPE_IMAGE = 'image';
public const EVENT_TYPE_VOLUME = 'volume';
public const EVENT_TYPE_NETWORK = 'network';
public const EVENT_TYPE_DAEMON = 'daemon';
public const EVENT_TYPE_PLUGIN = 'plugin';
public const EVENT_TYPE_SERVICE = 'service';
public const EVENT_TYPE_NODE = 'node';
public const EVENT_TYPE_SECRET = 'secret';
public const EVENT_TYPE_CONFIG = 'config';

Типи подій для контейнерів

public const CONTAINER_EVENT_ATTACH = 'attach';
public const CONTAINER_EVENT_COMMIT = 'commit';
public const CONTAINER_EVENT_COPY = 'copy';
public const CONTAINER_EVENT_CREATE = 'create';
public const CONTAINER_EVENT_DESTROY = 'destroy';
public const CONTAINER_EVENT_DETACH = 'detach';
public const CONTAINER_EVENT_DIE = 'die';
public const CONTAINER_EVENT_EXEC_CREATE = 'exec_create';
public const CONTAINER_EVENT_EXEC_DETACH = 'exec_detach';
public const CONTAINER_EVENT_EXEC_START = 'exec_start';
public const CONTAINER_EVENT_EXEC_DIE = 'exec_die';
public const CONTAINER_EVENT_EXPORT = 'export';
public const CONTAINER_EVENT_HEALTH_STATUS = 'health_status';
public const CONTAINER_EVENT_KILL = 'kill';
public const CONTAINER_EVENT_OOM = 'oom';
public const CONTAINER_EVENT_PAUSE = 'pause';
public const CONTAINER_EVENT_RENAME = 'rename';
public const CONTAINER_EVENT_RESIZE = 'resize';
public const CONTAINER_EVENT_RESTART = 'restart';
public const CONTAINER_EVENT_START = 'start';
public const CONTAINER_EVENT_STOP = 'stop';
public const CONTAINER_EVENT_TOP = 'top';
public const CONTAINER_EVENT_UNPAUSE = 'unpause';
public const CONTAINER_EVENT_UPDATE = 'update';

Типи подій для образів

public const IMAGE_EVENT_DELETE = 'delete';
public const IMAGE_EVENT_IMPORT = 'import';
public const IMAGE_EVENT_LOAD = 'load';
public const IMAGE_EVENT_PULL = 'pull';
public const IMAGE_EVENT_PUSH = 'push';
public const IMAGE_EVENT_SAVE = 'save';
public const IMAGE_EVENT_TAG = 'tag';
public const IMAGE_EVENT_UNTAG = 'untag';

Типи подій для томів

public const VOLUME_EVENT_CREATE = 'create';
public const VOLUME_EVENT_DESTROY = 'destroy';
public const VOLUME_EVENT_MOUNT = 'mount';
public const VOLUME_EVENT_UNMOUNT = 'unmount';

Типи подій для мереж

public const NETWORK_EVENT_CREATE = 'create';
public const NETWORK_EVENT_CONNECT = 'connect';
public const NETWORK_EVENT_DESTROY = 'destroy';
public const NETWORK_EVENT_DISCONNECT = 'disconnect';
public const NETWORK_EVENT_REMOVE = 'remove';

Методи

version

public function version(): array

Отримує інформацію про версію Docker.

Повертає:

Винятки:

info

public function info(): array

Отримує загальносистемну інформацію.

Повертає:

Винятки:

auth

public function auth(array $authConfig): array

Перевіряє конфігурацію автентифікації.

Параметри:

Повертає:

Винятки:

ping

public function ping(): bool

Перевіряє доступність сервера Docker.

Повертає:

events

public function events(array $filters = []): array

Отримує події від сервера в реальному часі.

Параметри:

Повертає:

Винятки:

Приклад:

// Отримати тільки події контейнерів
$events = $system->events(['type' => [System::EVENT_TYPE_CONTAINER]]);

// Отримати події для контейнерів і мереж з учорашнього дня
$events = $system->events([
    'type' => [System::EVENT_TYPE_CONTAINER, System::EVENT_TYPE_NETWORK],
    'since' => strtotime('-1 day')
]);

dataUsage

public function dataUsage(): array

Отримує інформацію про використання даних.

Повертає:

Винятки:

usage

public function usage(): array

Аналог методу dataUsage(), отримує інформацію про використання системи.

Повертає:

Винятки:

prune

public function prune(array $options = []): array

Видаляє невикористані дані (контейнери, мережі, образи, томи).

Параметри:

Повертає:

Винятки:

Приклади використання

Отримання інформації про Docker

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();

// Отримати інформацію про версію Docker
$version = $client->system()->version();
echo "Docker Engine версія: {$version['Version']}\n";
echo "API версія: {$version['ApiVersion']}\n";

// Отримати системну інформацію
$info = $client->system()->info();
echo "Кількість контейнерів: {$info['Containers']}\n";
echo "Кількість образів: {$info['Images']}\n";
echo "ОС/Архітектура: {$info['OperatingSystem']}/{$info['Architecture']}\n";

Перевірка автентифікації

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();

$auth = $client->system()->auth([
    'username' => 'myusername',
    'password' => 'mypassword',
    'serveraddress' => 'https://index.docker.io/v1/'
]);

if (isset($auth['Status']) && $auth['Status'] === 'Login Succeeded') {
    echo "Автентифікація успішна\n";
} else {
    echo "Помилка автентифікації\n";
}

Моніторинг подій

use Sangezar\DockerClient\DockerClient;
use Sangezar\DockerClient\Api\System;

$client = DockerClient::createUnix();

// Отримати події контейнерів за останню годину
$events = $client->system()->events([
    'type' => [System::EVENT_TYPE_CONTAINER],
    'since' => strtotime('-1 hour')
]);

foreach ($events as $event) {
    echo "Подія: {$event['Type']}/{$event['Action']} для {$event['Actor']['ID']}\n";
    echo "Час: " . date('Y-m-d H:i:s', $event['time']) . "\n";
}

Очищення невикористаних ресурсів

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();

// Очистити всі невикористані ресурси (контейнери, мережі, образи, томи)
$pruneResult = $client->system()->prune([
    'volumes' => true,
    'images' => true
]);

echo "Звільнено місця: " . ($pruneResult['SpaceReclaimed'] ?? 0) . " байт\n";