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';
public function list(array $parameters = []): array
Отримує список контейнерів.
$parameters - Масив параметрів для фільтрації результатів:
all (bool) - Показати всі контейнери (за замовчуванням показуються тільки запущені)limit (int) - Обмежити кількість результатівsize (bool) - Показати розміри контейнерівfilters (array |
string) - Фільтри у форматі JSON |
InvalidParameterValueException - якщо передані неприпустимі параметриpublic function create(ContainerConfig $config): array
Створює новий контейнер.
$config - Об’єкт ContainerConfig з конфігурацією контейнераMissingRequiredParameterException - якщо відсутні обов’язкові параметриInvalidParameterValueException - якщо передані неприпустимі параметриInvalidConfigurationException - якщо конфігурація неприпустимаOperationFailedException - якщо операція не вдаласяpublic function inspect(string $containerId): array
Отримує детальну інформацію про контейнер.
$containerId - ID або ім’я контейнераMissingRequiredParameterException - якщо ID контейнера порожнійNotFoundException - якщо контейнер не знайденийpublic function start(string $containerId): bool
Запускає контейнер.
$containerId - ID або ім’я контейнераtrue, якщо контейнер успішно запущенийMissingRequiredParameterException - якщо ID контейнера порожнійOperationFailedException - якщо операція не вдаласяNotFoundException - якщо контейнер не знайденийpublic function stop(string $containerId, int $timeout = 10): bool
Зупиняє контейнер.
$containerId - ID або ім’я контейнера$timeout - Таймаут у секундах перед примусовим зупиненням (за замовчуванням 10 секунд)true, якщо контейнер успішно зупиненийMissingRequiredParameterException - якщо ID контейнера порожнійOperationFailedException - якщо операція не вдаласяNotFoundException - якщо контейнер не знайденийpublic function restart(string $containerId, int $timeout = 10): bool
Перезапускає контейнер.
$containerId - ID або ім’я контейнера$timeout - Таймаут у секундах перед примусовим перезапуском (за замовчуванням 10 секунд)true, якщо контейнер успішно перезапущенийMissingRequiredParameterException - якщо ID контейнера порожнійOperationFailedException - якщо операція не вдаласяNotFoundException - якщо контейнер не знайденийpublic function kill(string $id, string $signal = null): bool
Вбиває контейнер, надсилаючи сигнал.
$id - ID або ім’я контейнера$signal - Сигнал для надсилання (за замовчуванням SIGKILL)true, якщо контейнер успішно вбитийMissingRequiredParameterException - якщо ID контейнера порожнійInvalidParameterValueException - якщо сигнал неприпустимийOperationFailedException - якщо операція не вдаласяNotFoundException - якщо контейнер не знайденийpublic function remove(string $containerId, bool $force = false, bool $removeVolumes = false): bool
Видаляє контейнер.
$containerId - ID або ім’я контейнера$force - Форсувати видалення, навіть якщо контейнер запущений (за замовчуванням false)$removeVolumes - Видалити пов’язані томи (за замовчуванням false)true, якщо контейнер успішно видаленийMissingRequiredParameterException - якщо ID контейнера порожнійOperationFailedException - якщо операція не вдаласяNotFoundException - якщо контейнер не знайденийpublic function logs(string $containerId, array $parameters = []): array
Отримує логи контейнера.
$containerId - ID або ім’я контейнера$parameters - Масив параметрів для фільтрації логів:
follow (bool) - Слідкувати за логамиstdout (bool) - Включити stdout (за замовчуванням true)stderr (bool) - Включити stderr (за замовчуванням true)since (int) - Мітка часу початку логівuntil (int) - Мітка часу кінця логівtimestamps (bool) - Включити мітки часуtail (string |
int) - Кількість рядків для виведення з кінця логів |
MissingRequiredParameterException - якщо ID контейнера порожнійInvalidParameterValueException - якщо передані неприпустимі параметриNotFoundException - якщо контейнер не знайденийpublic function stats(string $containerId, bool $stream = false): array
Отримує статистику використання ресурсів контейнера.
$containerId - ID або ім’я контейнера$stream - Отримувати статистику в реальному часі (за замовчуванням false)MissingRequiredParameterException - якщо ID контейнера порожнійNotFoundException - якщо контейнер не знайденийpublic function exists(string $containerId): bool
Перевіряє, чи існує контейнер.
$containerId - ID або ім’я контейнераtrue, якщо контейнер існує, false - якщо ніMissingRequiredParameterException - якщо ID контейнера порожній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";
}