ContainerOperations
- це клас, що надає функціональність для виконання операцій з контейнерами Docker на всіх вузлах кластера одночасно. Цей клас розширює AbstractOperations
і дозволяє отримувати список контейнерів, створювати, запускати, зупиняти, перезапускати та видаляти контейнери на всіх вузлах кластера.
Sangezar\DockerClient\Cluster\Operations
Клас розширює AbstractOperations
і успадковує всі його методи та властивості.
public function list(array $parameters = []): array
Отримує список контейнерів з усіх вузлів кластера.
$parameters
- Масив параметрів фільтрації:
all
(bool): Показати всі контейнери (не тільки активні)size
(bool): Показувати розмір контейнерівlimit
(int): Обмежити кількість результатівfilters
(array): Фільтри для пошуку контейнерівInvalidParameterValueException
- якщо надані неприпустимі параметри фільтраціїpublic function create(ContainerConfig $config): array
Створює контейнер на всіх вузлах кластера.
$config
- Конфігурація контейнераInvalidConfigurationException
- якщо конфігурація недійснаOperationFailedException
- якщо операція не вдаласяpublic function inspect(string $containerId): array
Отримує детальну інформацію про контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнераMissingRequiredParameterException
- якщо ID контейнера порожнійpublic function start(string $containerId): array
Запускає контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнераMissingRequiredParameterException
- якщо ID контейнера порожнійpublic function stop(string $containerId, int $timeout = 10): array
Зупиняє контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнера$timeout
- Тайм-аут зупинки в секундах (за замовчуванням 10)MissingRequiredParameterException
- якщо ID контейнера порожнійInvalidParameterValueException
- якщо тайм-аут від’ємнийpublic function restart(string $containerId, int $timeout = 10): array
Перезапускає контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнера$timeout
- Тайм-аут зупинки в секундах (за замовчуванням 10)MissingRequiredParameterException
- якщо ID контейнера порожнійInvalidParameterValueException
- якщо тайм-аут від’ємнийpublic function remove(string $containerId, bool $force = false, bool $removeVolumes = false): array
Видаляє контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнера$force
- Примусово видалити працюючий контейнер (за замовчуванням false)$removeVolumes
- Видалити томи разом з контейнером (за замовчуванням false)MissingRequiredParameterException
- якщо ID контейнера порожнійpublic function logs(string $containerId, array $parameters = []): array
Отримує логи контейнера з усіх вузлів кластера.
$containerId
- ID або ім’я контейнера$parameters
- Параметри запиту логів:
stdout
(bool): Показувати стандартний вихід (stdout)stderr
(bool): Показувати стандартний потік помилок (stderr)since
(int): Показувати логи з вказаного часу (Unix timestamp)until
(int): Показувати логи до вказаного часу (Unix timestamp)timestamps
(bool): Додавати часові мітки до логівtail
(string/int): Кількість останніх рядків логів для поверненняMissingRequiredParameterException
- якщо ID контейнера порожнійInvalidParameterValueException
- якщо надані неприпустимі параметриpublic function stats(string $containerId, bool $stream = false): array
Отримує статистику використання ресурсів контейнером на всіх вузлах кластера.
$containerId
- ID або ім’я контейнера$stream
- Чи слід потокову передачу статистики (за замовчуванням false)MissingRequiredParameterException
- якщо ID контейнера порожнійpublic function exists(string $containerId): array
Перевіряє, чи існує контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнераMissingRequiredParameterException
- якщо ID контейнера порожнійpublic function existsOnAllNodes(string $containerId): bool
Перевіряє, чи існує контейнер на всіх вузлах кластера.
$containerId
- ID або ім’я контейнераtrue
, якщо контейнер існує на всіх вузлах, false
- якщо хоча б на одному вузлі контейнер відсутнійMissingRequiredParameterException
- якщо ID контейнера порожнійpublic function getNodesWithContainer(string $containerId): array
Отримує список вузлів, на яких існує контейнер.
$containerId
- ID або ім’я контейнераMissingRequiredParameterException
- якщо ID контейнера порожній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);