docker-php-client

Volume Class Documentation

Description

Volume is a class for working with Docker volumes through API. It provides methods for creating, inspecting, deleting, and managing Docker volumes.

Namespace

Sangezar\DockerClient\Api

Inheritance

The Volume class inherits from AbstractApi and implements the VolumeInterface interface.

Constants

Volume Driver Types

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';

Driver Option Constants

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

Methods

list

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

Gets a list of volumes.

Parameters:

Returns:

Exceptions:

create

public function create(VolumeConfig $config): array

Creates a new volume.

Parameters:

Returns:

Exceptions:

inspect

public function inspect(string $name): array

Gets detailed information about a volume.

Parameters:

Returns:

Exceptions:

remove

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

Removes a volume.

Parameters:

Returns:

Exceptions:

prune

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

Removes unused volumes.

Parameters:

Returns:

Exceptions:

exists

public function exists(string $name): bool

Checks if a volume exists.

Parameters:

Returns:

Exceptions:

Usage Examples

Getting a List of Volumes

use Sangezar\DockerClient\DockerClient;

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

foreach ($volumes['Volumes'] as $volume) {
    echo "Volume: {$volume['Name']}, driver: {$volume['Driver']}\n";
}

Creating a New Volume

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 created with name: {$volume['Name']}\n";

Inspecting a Volume

use Sangezar\DockerClient\DockerClient;

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

if ($client->volume()->exists($volumeName)) {
    $volumeInfo = $client->volume()->inspect($volumeName);
    echo "Volume: {$volumeInfo['Name']}\n";
    echo "Driver: {$volumeInfo['Driver']}\n";
    echo "Mount point: {$volumeInfo['Mountpoint']}\n";
    
    if (!empty($volumeInfo['Labels'])) {
        echo "Labels:\n";
        foreach ($volumeInfo['Labels'] as $key => $value) {
            echo "  - {$key}: {$value}\n";
        }
    }
}

Removing a Volume

use Sangezar\DockerClient\DockerClient;

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

if ($client->volume()->exists($volumeName)) {
    $client->volume()->remove($volumeName);
    echo "Volume {$volumeName} removed\n";
}

Cleaning Up Unused Volumes

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();

$pruneResult = $client->volume()->prune();
echo "Volumes removed: " . count($pruneResult['VolumesDeleted'] ?? []) . "\n";
echo "Space freed: " . ($pruneResult['SpaceReclaimed'] ?? 0) . " bytes\n";