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';
public function list(array $filters = []): array
Отримує список томів.
$filters
- Фільтри для застосування у форматі JSON або масиву:
driver
(string) - Фільтрація за драйвером томуlabel
(string) - Фільтрація за міткою томуname
(string) - Фільтрація за іменем томуdangling
(bool) - Фільтрація томів, які не використовуються жодним контейнеромInvalidParameterValueException
- якщо передані неприпустимі фільтриpublic function create(VolumeConfig $config): array
Створює новий том.
$config
- Об’єкт VolumeConfig
з конфігурацією томуOperationFailedException
- якщо створення не вдалосяpublic function inspect(string $name): array
Отримує детальну інформацію про том.
$name
- Ім’я томуMissingRequiredParameterException
- якщо ім’я тому порожнєNotFoundException
- якщо том не знайденийpublic function remove(string $name, bool $force = false): bool
Видаляє том.
$name
- Ім’я тому$force
- Примусово видалити том, навіть якщо він використовується (за замовчуванням false
)true
, якщо том успішно видаленийMissingRequiredParameterException
- якщо ім’я тому порожнєNotFoundException
- якщо том не знайденийOperationFailedException
- якщо видалення не вдалосяpublic function prune(array $filters = []): array
Видаляє невикористані томи.
$filters
- Фільтри для вибору томів для очищення:
label
(string) - Видалити тільки томи з вказаними міткамиall
(bool) - Видалити всі невикористані томи, а не тільки анонімніInvalidParameterValueException
- якщо фільтри неприпустиміOperationFailedException
- якщо очищення не вдалосяpublic function exists(string $name): bool
Перевіряє, чи існує том.
$name
- Ім’я томуtrue
, якщо том існує, false
- якщо ніMissingRequiredParameterException
- якщо ім’я тому порожнє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";