docker-php-client

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

Опис

ImageOperations - це клас, що забезпечує операції з образами Docker на всіх вузлах кластера одночасно. Клас дозволяє отримувати список образів, будувати, створювати (витягувати), інспектувати, відправляти в реєстр, тегувати та видаляти образи Docker на всіх вузлах кластера.

Простір імен

Sangezar\DockerClient\Cluster\Operations

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

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

Методи

list

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

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

Параметри:

Повертає:

Винятки:

build

public function build(array $parameters = [], array $config = []): array

Будує образ на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

buildWithOptions

public function buildWithOptions(\Sangezar\DockerClient\Config\ImageBuildOptions $options): array

Будує образ на всіх вузлах кластера, використовуючи об’єкт параметрів збірки.

Параметри:

Повертає:

Винятки:

create

public function create(string $fromImage, ?string $tag = null): array

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

Параметри:

Повертає:

Винятки:

inspect

public function inspect(string $name): array

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

Параметри:

Повертає:

Винятки:

history

public function history(string $name): array

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

Параметри:

Повертає:

Винятки:

push

public function push(string $name, array $parameters = []): array

Відправляє образ у реєстр з усіх вузлів кластера.

Параметри:

Повертає:

Винятки:

tag

public function tag(string $name, string $repo, ?string $tag = null): array

Тегує образ на всіх вузлах кластера.

Параметри:

Повертає:

Винятки:

remove

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

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

Параметри:

Повертає:

Винятки:

public function search(string $term): array

Шукає образи у Docker Hub зі всіх вузлів кластера.

Параметри:

Повертає:

Винятки:

prune

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

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

Параметри:

Повертає:

exists

public function exists(string $name): array

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

Параметри:

Повертає:

Винятки:

existsOnAllNodes

public function existsOnAllNodes(string $name): bool

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

Параметри:

Повертає:

Винятки:

getNodesWithImage

public function getNodesWithImage(string $name): array

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

Параметри:

Повертає:

Винятки:

pull

public function pull(string $name, array $parameters = []): array

Витягує образ з реєстру на всі вузли кластера.

Параметри:

Повертає:

Винятки:

load

public function load(string $imageArchive): array

Завантажує образ з архіву на всі вузли кластера.

Параметри:

Повертає:

Винятки:

save

public function save($names, string $outputFile): 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'));

// Отримання списку всіх образів
$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);