docker-php-client

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

Опис

ContainerOperations - це клас, що надає функціональність для виконання операцій з контейнерами Docker на всіх вузлах кластера одночасно. Цей клас розширює AbstractOperations і дозволяє отримувати список контейнерів, створювати, запускати, зупиняти, перезапускати та видаляти контейнери на всіх вузлах кластера.

Простір імен

Sangezar\DockerClient\Cluster\Operations

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

Клас розширює AbstractOperations і успадковує всі його методи та властивості.

Методи

list

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

Отримує список контейнерів з усіх вузлів кластера.

Параметри:

Повертає:

Винятки:

create

public function create(ContainerConfig $config): array

Створює контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

inspect

public function inspect(string $containerId): array

Отримує детальну інформацію про контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

start

public function start(string $containerId): array

Запускає контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

stop

public function stop(string $containerId, int $timeout = 10): array

Зупиняє контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

restart

public function restart(string $containerId, int $timeout = 10): array

Перезапускає контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

remove

public function remove(string $containerId, bool $force = false, bool $removeVolumes = false): array

Видаляє контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

logs

public function logs(string $containerId, array $parameters = []): array

Отримує логи контейнера з усіх вузлів кластера.

Параметри:

Повертає:

Винятки:

stats

public function stats(string $containerId, bool $stream = false): array

Отримує статистику використання ресурсів контейнером на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

exists

public function exists(string $containerId): array

Перевіряє, чи існує контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

existsOnAllNodes

public function existsOnAllNodes(string $containerId): bool

Перевіряє, чи існує контейнер на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

getNodesWithContainer

public function getNodesWithContainer(string $containerId): array

Отримує список вузлів, на яких існує контейнер.

Параметри:

Повертає:

Винятки:

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

Отримання списку контейнерів з усіх вузлів

use Sangezar\DockerClient\Cluster\DockerCluster;
use Sangezar\DockerClient\DockerClient;

// Створення кластера
$cluster = new DockerCluster();
$cluster->addNode('node1', DockerClient::createTcp('tcp://192.168.1.10:2375'));
$cluster->addNode('node2', DockerClient::createTcp('tcp://192.168.1.11:2375'));

// Отримання списку всіх контейнерів
$containers = $cluster->node('node1')->containers()->list(['all' => true]);

// Перевірка результатів
foreach ($containers as $nodeName => $result) {
    echo "Контейнери на вузлі $nodeName:\n";
    foreach ($result as $container) {
        echo "  - {$container['Names'][0]} (ID: {$container['Id']})\n";
    }
}

Створення та запуск контейнера на всіх вузлах

use Sangezar\DockerClient\Config\ContainerConfig;
use Sangezar\DockerClient\Cluster\NodeCollection;
use Sangezar\DockerClient\DockerClient;

// Створення колекції вузлів
$nodes = [
    'node1' => DockerClient::createTcp('tcp://192.168.1.10:2375'),
    'node2' => DockerClient::createTcp('tcp://192.168.1.11:2375'),
];
$collection = new NodeCollection($nodes);

// Створення конфігурації контейнера
$config = ContainerConfig::create()
    ->setImage('nginx:latest')
    ->setName('test-nginx')
    ->exposePorts(80, 443);

// Створення контейнера на всіх вузлах
$results = $collection->containers()->create($config);

// Запуск контейнера на всіх вузлах
$startResults = $collection->containers()->start('test-nginx');

Перевірка наявності контейнера на вузлах

// Перевірка, чи існує контейнер на всіх вузлах
$exists = $collection->containers()->existsOnAllNodes('test-nginx');
if ($exists) {
    echo "Контейнер 'test-nginx' існує на всіх вузлах\n";
} else {
    // Отримання списку вузлів, де контейнер існує
    $nodesWithContainer = $collection->containers()->getNodesWithContainer('test-nginx');
    echo "Контейнер 'test-nginx' існує тільки на вузлах: " . implode(', ', $nodesWithContainer) . "\n";
}

// Зупинка та видалення контейнера
$collection->containers()->stop('test-nginx');
$collection->containers()->remove('test-nginx', true);