docker-php-client

Container Class Documentation

Description

Container is a class for working with Docker containers through the API. It provides methods for creating, starting, stopping, restarting, removing, and managing Docker containers.

Namespace

Sangezar\DockerClient\Api

Inheritance

The Container class inherits from AbstractApi and implements the ContainerInterface interface.

Constants

Container Signals

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';

Methods

list

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

Gets a list of containers.

Parameters:

Returns:

Exceptions:

create

public function create(ContainerConfig $config): array

Creates a new container.

Parameters:

Returns:

Exceptions:

inspect

public function inspect(string $containerId): array

Gets detailed information about a container.

Parameters:

Returns:

Exceptions:

start

public function start(string $containerId): bool

Starts a container.

Parameters:

Returns:

Exceptions:

stop

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

Stops a container.

Parameters:

Returns:

Exceptions:

restart

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

Restarts a container.

Parameters:

Returns:

Exceptions:

kill

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

Kills a container by sending a signal.

Parameters:

Returns:

Exceptions:

remove

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

Removes a container.

Parameters:

Returns:

Exceptions:

logs

public function logs(string $containerId, array $parameters = []): array

Gets container logs.

Parameters:

Returns:

Exceptions:

stats

public function stats(string $containerId, bool $stream = false): array

Gets container resource usage statistics.

Parameters:

Returns:

Exceptions:

exists

public function exists(string $containerId): bool

Checks if a container exists.

Parameters:

Returns:

Exceptions:

Usage Examples

Getting a List of Containers

use Sangezar\DockerClient\DockerClient;

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

foreach ($containers as $container) {
    echo "Container: {$container['Names'][0]}, status: {$container['Status']}\n";
}

Creating and Starting a Container

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 "Container created with ID: {$container['Id']}\n";

Stopping and Removing a Container

use Sangezar\DockerClient\DockerClient;

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

if ($client->container()->exists($containerId)) {
    $client->container()->stop($containerId);
    $client->container()->remove($containerId);
    echo "Container {$containerId} stopped and removed\n";
}