docker-php-client

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

Опис

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

Простір імен

Sangezar\DockerClient\Api

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

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

Константи

Типи драйверів томів

public const DRIVER_LOCAL = 'local';
public const DRIVER_NFS = 'nfs';
public const DRIVER_TMPFS = 'tmpfs';
public const DRIVER_BTRFS = 'btrfs';
public const DRIVER_VIEUX_BRIDGE = 'vieux-bridge';
public const DRIVER_VFS = 'vfs';
public const DRIVER_CIFS = 'cifs';

Константи для опцій драйверів

public const OPT_TYPE = 'type';
public const OPT_DEVICE = 'device';
public const OPT_O = 'o';
public const OPT_SIZE = 'size';

Методи

list

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

Отримує список томів.

Параметри:

Повертає:

Винятки:

create

public function create(VolumeConfig $config): array

Створює новий том.

Параметри:

Повертає:

Винятки:

inspect

public function inspect(string $name): array

Отримує детальну інформацію про том.

Параметри:

Повертає:

Винятки:

remove

public function remove(string $name, bool $force = false): bool

Видаляє том.

Параметри:

Повертає:

Винятки:

prune

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

Видаляє невикористані томи.

Параметри:

Повертає:

Винятки:

exists

public function exists(string $name): bool

Перевіряє, чи існує том.

Параметри:

Повертає:

Винятки:

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

Отримання списку томів

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();
$volumes = $client->volume()->list();

foreach ($volumes['Volumes'] as $volume) {
    echo "Том: {$volume['Name']}, драйвер: {$volume['Driver']}\n";
}

Створення нового тому

use Sangezar\DockerClient\DockerClient;
use Sangezar\DockerClient\Config\VolumeConfig;

$client = DockerClient::createUnix();

$config = new VolumeConfig();
$config->setName('my-volume')
       ->setDriver(Volume::DRIVER_LOCAL)
       ->setLabels([
           'environment' => 'development',
           'application' => 'my-app'
       ]);

$volume = $client->volume()->create($config);
echo "Том створено з іменем: {$volume['Name']}\n";

Інспектування тому

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();
$volumeName = 'my-volume';

if ($client->volume()->exists($volumeName)) {
    $volumeInfo = $client->volume()->inspect($volumeName);
    echo "Том: {$volumeInfo['Name']}\n";
    echo "Драйвер: {$volumeInfo['Driver']}\n";
    echo "Точка монтування: {$volumeInfo['Mountpoint']}\n";
    
    if (!empty($volumeInfo['Labels'])) {
        echo "Мітки:\n";
        foreach ($volumeInfo['Labels'] as $key => $value) {
            echo "  - {$key}: {$value}\n";
        }
    }
}

Видалення тому

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();
$volumeName = 'my-volume';

if ($client->volume()->exists($volumeName)) {
    $client->volume()->remove($volumeName);
    echo "Том {$volumeName} видалено\n";
}

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

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();

$pruneResult = $client->volume()->prune();
echo "Видалено томів: " . count($pruneResult['VolumesDeleted'] ?? []) . "\n";
echo "Звільнено місця: " . ($pruneResult['SpaceReclaimed'] ?? 0) . " байт\n";