ImageOperations
- це клас, що забезпечує операції з образами Docker на всіх вузлах кластера одночасно. Клас дозволяє отримувати список образів, будувати, створювати (витягувати), інспектувати, відправляти в реєстр, тегувати та видаляти образи Docker на всіх вузлах кластера.
Sangezar\DockerClient\Cluster\Operations
Клас розширює AbstractOperations
і успадковує всі його методи та властивості.
public function list(array $parameters = []): array
Отримує список образів з усіх вузлів кластера.
$parameters
- Масив параметрів фільтрації:
all
(bool): Показати всі образи (за замовчуванням false)filters
(array): Фільтри для пошуку образівInvalidParameterValueException
- якщо надані неприпустимі параметри фільтраціїpublic function build(array $parameters = [], array $config = []): array
Будує образ на всіх вузлах кластера.
$parameters
- Параметри збірки:
t
або tag
(string): Тег образу (обов’язково)$config
- Додаткова конфігурація:
context
(string): Шлях до контексту збіркиInvalidParameterValueException
- якщо надані неприпустимі параметриInvalidConfigurationException
- якщо конфігурація недійснаMissingRequiredParameterException
- якщо відсутній обов’язковий параметр тегаpublic function buildWithOptions(\Sangezar\DockerClient\Config\ImageBuildOptions $options): array
Будує образ на всіх вузлах кластера, використовуючи об’єкт параметрів збірки.
$options
- Об’єкт параметрів збірки образуInvalidParameterValueException
- якщо надані неприпустимі параметриInvalidConfigurationException
- якщо конфігурація недійснаpublic function create(string $fromImage, ?string $tag = null): array
Створює образ, витягуючи його з реєстру, на всіх вузлах кластера.
$fromImage
- Ім’я образу для витягування$tag
- Тег образу (за замовчуванням “latest”)MissingRequiredParameterException
- якщо ім’я образу порожнєInvalidParameterValueException
- якщо надані неприпустимі параметриpublic function inspect(string $name): array
Отримує детальну інформацію про образ на всіх вузлах кластера.
$name
- Ім’я або ID образуMissingRequiredParameterException
- якщо ім’я образу порожнєpublic function history(string $name): array
Отримує історію образу на всіх вузлах кластера.
$name
- Ім’я або ID образуMissingRequiredParameterException
- якщо ім’я образу порожнєpublic function push(string $name, array $parameters = []): array
Відправляє образ у реєстр з усіх вузлів кластера.
$name
- Ім’я образу для відправки$parameters
- Додаткові параметриMissingRequiredParameterException
- якщо ім’я образу порожнєpublic function tag(string $name, string $repo, ?string $tag = null): array
Тегує образ на всіх вузлах кластера.
$name
- Ім’я або ID вихідного образу$repo
- Репозиторій для нового тега$tag
- Новий тег (якщо null, використовується “latest”)MissingRequiredParameterException
- якщо ім’я образу або репозиторію порожнєInvalidParameterValueException
- якщо надані неприпустимі параметриpublic function remove(string $name, bool $force = false, bool $noprune = false): array
Видаляє образ на всіх вузлах кластера.
$name
- Ім’я або ID образу$force
- Примусово видалити образ (за замовчуванням false)$noprune
- Не видаляти проміжні образи (за замовчуванням false)MissingRequiredParameterException
- якщо ім’я образу порожнєpublic function search(string $term): array
Шукає образи у Docker Hub зі всіх вузлів кластера.
$term
- Термін пошукуMissingRequiredParameterException
- якщо термін пошуку порожнійpublic function prune(array $parameters = []): array
Видаляє невикористовувані образи на всіх вузлах кластера.
$parameters
- Параметри для видалення:
filters
(array): Фільтри для вибору образів для видаленняpublic function exists(string $name): array
Перевіряє, чи існує образ на всіх вузлах кластера.
$name
- Ім’я або ID образуMissingRequiredParameterException
- якщо ім’я образу порожнєpublic function existsOnAllNodes(string $name): bool
Перевіряє, чи існує образ на всіх вузлах кластера.
$name
- Ім’я або ID образуtrue
, якщо образ існує на всіх вузлах, false
- якщо хоча б на одному вузлі образ відсутнійMissingRequiredParameterException
- якщо ім’я образу порожнєpublic function getNodesWithImage(string $name): array
Отримує список вузлів, на яких існує образ.
$name
- Ім’я або ID образуMissingRequiredParameterException
- якщо ім’я образу порожнєpublic function pull(string $name, array $parameters = []): array
Витягує образ з реєстру на всі вузли кластера.
$name
- Ім’я образу для витягування$parameters
- Додаткові параметри для витягуванняMissingRequiredParameterException
- якщо ім’я образу порожнєInvalidParameterValueException
- якщо надані неприпустимі параметриpublic function load(string $imageArchive): array
Завантажує образ з архіву на всі вузли кластера.
$imageArchive
- Шлях до архіву образуMissingRequiredParameterException
- якщо шлях до архіву порожнійFileNotFoundException
- якщо файл архіву не знайденоpublic function save($names, string $outputFile): array
Зберігає образи в архів з усіх вузлів кластера.
$names
- Ім’я або масив імен образів для збереження$outputFile
- Шлях до файлу виводуMissingRequiredParameterException
- якщо ім’я образу або шлях виводу порожнійInvalidParameterValueException
- якщо надані неприпустимі параметри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'));
// Отримання списку всіх образів
$images = $cluster->images()->list(['all' => true]);
// Перевірка результатів
foreach ($images as $nodeName => $result) {
echo "Образи на вузлі $nodeName:\n";
foreach ($result as $image) {
echo " - {$image['RepoTags'][0]} (ID: {$image['Id']})\n";
}
}
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);
// Витягування образу на всі вузли
$results = $collection->images()->pull('nginx:latest');
// Перевірка, чи існує образ на всіх вузлах
$exists = $collection->images()->existsOnAllNodes('nginx:latest');
if ($exists) {
echo "Образ 'nginx:latest' існує на всіх вузлах\n";
} else {
// Отримання списку вузлів, де образ існує
$nodesWithImage = $collection->images()->getNodesWithImage('nginx:latest');
echo "Образ 'nginx:latest' існує тільки на вузлах: " . implode(', ', $nodesWithImage) . "\n";
}
// Збірка образу на всіх вузлах
$buildResults = $collection->images()->build([
't' => 'myapp:latest',
'dockerfile' => 'Dockerfile',
], [
'context' => '/path/to/build/context',
]);
// Тегування образу для відправки
$collection->images()->tag('myapp:latest', 'registry.example.com/myapp', 'latest');
// Відправка образу в реєстр
$pushResults = $collection->images()->push('registry.example.com/myapp:latest');
// Видалення локального образу
$collection->images()->remove('myapp:latest', true);