Network
- це клас для роботи з мережами Docker через API. Він надає методи для створення, інспектування, підключення контейнерів та керування мережами Docker.
Sangezar\DockerClient\Api
Клас Network
успадковується від AbstractApi
та реалізує інтерфейс NetworkInterface
.
public const DRIVER_BRIDGE = 'bridge';
public const DRIVER_HOST = 'host';
public const DRIVER_OVERLAY = 'overlay';
public const DRIVER_MACVLAN = 'macvlan';
public const DRIVER_IPVLAN = 'ipvlan';
public const DRIVER_NONE = 'none';
public const SCOPE_LOCAL = 'local';
public const SCOPE_SWARM = 'swarm';
public const SCOPE_GLOBAL = 'global';
public const IPAM_DRIVER_DEFAULT = 'default';
public const IPAM_DRIVER_NULL = 'null';
public function list(array $filters = []): array
Отримує список мереж.
$filters
- Фільтри для застосування у форматі JSON або масиву:
driver
(string) - Фільтрація за драйвером мережіid
(string) - ID мережіlabel
(string) - Фільтрація за мітками мережіname
(string) - Ім’я мережіscope
(string) - Фільтрація за областю мережі (swarm, global або local)type
(string) - Фільтрація за типом мережі (custom або builtin)InvalidParameterValueException
- якщо передані неприпустимі фільтриpublic function inspect(string $id): array
Отримує детальну інформацію про мережу.
$id
- ID або ім’я мережіMissingRequiredParameterException
- якщо ID мережі порожнійNotFoundException
- якщо мережа не знайденаpublic function create(NetworkConfig $config): array
Створює нову мережу.
$config
- Об’єкт NetworkConfig
з конфігурацією мережіInvalidConfigurationException
- якщо конфігурація неприпустимаOperationFailedException
- якщо операція не вдаласяpublic function connect(string $id, string $container, array $config = []): bool
Підключає контейнер до мережі.
$id
- ID або ім’я мережі$container
- ID або ім’я контейнера$config
- Конфігурація підключення:
EndpointConfig
(array) - Конфігурація кінцевої точкиIPAddress
(string) - IPv4 адресаIPv6Address
(string) - IPv6 адресаLinks
(array) - Посилання на інші контейнериAliases
(array) - Імена для використання в мережіtrue
, якщо підключення успішнеMissingRequiredParameterException
- якщо обов’язкові параметри відсутніNotFoundException
- якщо мережа або контейнер не знайденіOperationFailedException
- якщо підключення не вдалосяpublic function disconnect(string $networkId, string $containerId, array $config = []): bool
Відключає контейнер від мережі.
$networkId
- ID або ім’я мережі$containerId
- ID або ім’я контейнера$config
- Конфігурація відключення:
Force
(bool) - Примусово відключити контейнер навіть якщо це призведе до помилки зв’язкуtrue
, якщо відключення успішнеMissingRequiredParameterException
- якщо обов’язкові параметри відсутніNotFoundException
- якщо мережа або контейнер не знайденіOperationFailedException
- якщо відключення не вдалосяpublic function remove(string $id): bool
Видаляє мережу.
$id
- ID або ім’я мережіtrue
, якщо мережа успішно видаленаMissingRequiredParameterException
- якщо ID мережі порожнійNotFoundException
- якщо мережа не знайденаOperationFailedException
- якщо видалення не вдалося (наприклад, мережа використовується)public function prune(array $filters = []): array
Видаляє всі невикористані мережі.
$filters
- Фільтри для визначення мереж для очищення:
until
(string) - Видалити мережі, створені до вказаного часуlabel
(string) - Видалити тільки мережі з вказаними міткамиInvalidParameterValueException
- якщо фільтри неприпустиміOperationFailedException
- якщо очищення не вдалосяpublic function exists(string $id): bool
Перевіряє, чи існує мережа.
$id
- ID або ім’я мережіtrue
, якщо мережа існує, false
- якщо ніMissingRequiredParameterException
- якщо ID мережі порожнійuse Sangezar\DockerClient\DockerClient;
$client = DockerClient::createUnix();
$networks = $client->network()->list();
foreach ($networks as $network) {
echo "Мережа: {$network['Name']}, драйвер: {$network['Driver']}\n";
}
use Sangezar\DockerClient\DockerClient;
use Sangezar\DockerClient\Config\NetworkConfig;
$client = DockerClient::createUnix();
$config = new NetworkConfig();
$config->setName('my-network')
->setDriver(Network::DRIVER_BRIDGE)
->setOptions([
'com.docker.network.bridge.name' => 'my-bridge'
]);
$network = $client->network()->create($config);
echo "Мережу створено з ID: {$network['Id']}\n";
use Sangezar\DockerClient\DockerClient;
$client = DockerClient::createUnix();
$networkId = 'my-network';
$containerId = 'my-container';
$client->network()->connect($networkId, $containerId, [
'Aliases' => ['web-server'],
'IPAddress' => '172.18.0.10'
]);
echo "Контейнер {$containerId} підключено до мережі {$networkId}\n";
use Sangezar\DockerClient\DockerClient;
$client = DockerClient::createUnix();
$networkId = 'my-network';
if ($client->network()->exists($networkId)) {
$client->network()->remove($networkId);
echo "Мережу {$networkId} видалено\n";
}