docker-php-client

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

Опис

Container - це клас для роботи з контейнерами Docker через API. Він надає методи для створення, запуску, зупинки, перезапуску, видалення та управління контейнерами Docker.

Простір імен

Sangezar\DockerClient\Api

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

Клас Container успадковується від AbstractApi та реалізує інтерфейс ContainerInterface.

Константи

Сигнали для контейнерів

public const SIGNAL_HUP = 'SIGHUP';
public const SIGNAL_INT = 'SIGINT';
public const SIGNAL_QUIT = 'SIGQUIT';
public const SIGNAL_ILL = 'SIGILL';
public const SIGNAL_TRAP = 'SIGTRAP';
public const SIGNAL_ABRT = 'SIGABRT';
public const SIGNAL_BUS = 'SIGBUS';
public const SIGNAL_FPE = 'SIGFPE';
public const SIGNAL_KILL = 'SIGKILL';
public const SIGNAL_USR1 = 'SIGUSR1';
public const SIGNAL_SEGV = 'SIGSEGV';
public const SIGNAL_USR2 = 'SIGUSR2';
public const SIGNAL_PIPE = 'SIGPIPE';
public const SIGNAL_ALRM = 'SIGALRM';
public const SIGNAL_TERM = 'SIGTERM';
public const SIGNAL_STKFLT = 'SIGSTKFLT';
public const SIGNAL_CHLD = 'SIGCHLD';
public const SIGNAL_CONT = 'SIGCONT';
public const SIGNAL_STOP = 'SIGSTOP';
public const SIGNAL_TSTP = 'SIGTSTP';
public const SIGNAL_TTIN = 'SIGTTIN';
public const SIGNAL_TTOU = 'SIGTTOU';
public const SIGNAL_URG = 'SIGURG';
public const SIGNAL_XCPU = 'SIGXCPU';
public const SIGNAL_XFSZ = 'SIGXFSZ';
public const SIGNAL_VTALRM = 'SIGVTALRM';
public const SIGNAL_PROF = 'SIGPROF';
public const SIGNAL_WINCH = 'SIGWINCH';
public const SIGNAL_IO = 'SIGIO';
public const SIGNAL_PWR = 'SIGPWR';
public const SIGNAL_SYS = 'SIGSYS';
public const SIGNAL_POLL = 'SIGPOLL';

Методи

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): bool

Запускає контейнер.

Параметри:

Повертає:

Винятки:

stop

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

Зупиняє контейнер.

Параметри:

Повертає:

Винятки:

restart

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

Перезапускає контейнер.

Параметри:

Повертає:

Винятки:

kill

public function kill(string $id, string $signal = null): bool

Вбиває контейнер, надсилаючи сигнал.

Параметри:

Повертає:

Винятки:

remove

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

Видаляє контейнер.

Параметри:

Повертає:

Винятки:

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): bool

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

Параметри:

Повертає:

Винятки:

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

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

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();
$containers = $client->container()->list(['all' => true]);

foreach ($containers as $container) {
    echo "Контейнер: {$container['Names'][0]}, статус: {$container['Status']}\n";
}

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

use Sangezar\DockerClient\DockerClient;
use Sangezar\DockerClient\Config\ContainerConfig;

$client = DockerClient::createUnix();

$config = new ContainerConfig();
$config->setName('my-container')
       ->setImage('nginx:latest')
       ->setExposedPorts(['80/tcp' => []])
       ->setHostConfig([
           'PortBindings' => [
               '80/tcp' => [['HostPort' => '8080']]
           ]
       ]);

$container = $client->container()->create($config);
$client->container()->start($container['Id']);

echo "Контейнер створено з ID: {$container['Id']}\n";

Зупинка та видалення контейнера

use Sangezar\DockerClient\DockerClient;

$client = DockerClient::createUnix();
$containerId = 'my-container';

if ($client->container()->exists($containerId)) {
    $client->container()->stop($containerId);
    $client->container()->remove($containerId);
    echo "Контейнер {$containerId} зупинено та видалено\n";
}