acamposm/docker-engine-api-poller

一个Laravel包,允许Laravel应用程序查询Docker Engine API。

1.0.0 2021-05-16 11:29 UTC

This package is auto-updated.

Last update: 2024-09-16 23:36:01 UTC


README

License Latest Stable Version Latest Unstable Version CodeFactor StyleCI Total Downloads

Docker Poller for Laravel

此包允许Laravel应用程序与Docker Engine API交互。

Docker Engine API是Docker Engine提供的一个HTTP API。这是Docker客户端用来与引擎通信的API,因此Docker客户端可以做的任何操作都可以通过API完成。

安装

您可以通过composer安装此包,然后发布资源

composer require acamposm/docker-poller

php artisan vendor:publish --provider="Acamposm\DockerEngineApiPoller\DockerPollerServiceProvider"

注意:我们尝试遵循SemVer v2.0.0

要求

要使用此包,您必须首先启用Docker Engine API,通常引擎API监听在2375端口,但它是可配置的。

注意:在生产环境中,您必须始终使用SSL加密保护API,并控制谁可以对此API进行请求。

用法

基本初始化

首先,使用Docker服务器主机详情创建一个DockerServer实例。

注意:默认情况下,DockerServer类使用Docker Engine API的默认端口(2375)和协议(http)。

Docker Engine API通过HTTP

use Acamposm\DockerEngineApiPoller\DockerServer;

$server = (new DockerServer())->server('localhost');

use Acamposm\DockerEngineApiPoller\DockerServer;

$server = (new DockerServer())->insecure()->port(12375)->server('localhost');

Docker Engine API通过HTTPS

use Acamposm\DockerEngineApiPoller\DockerServer;

$server = (new DockerServer())->secure()->server('localhost');

use Acamposm\DockerEngineApiPoller\DockerServer;

$server = (new DockerServer())->secure()->port(12375)->server('localhost');

API资源

容器

获取容器列表

获取Docker主机上正在运行的容器的列表。

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$containers_list = (new DockerApiRequest($server))
  ->containers(ResourceMethods::CONTAINERS_LIST)
  ->get();
获取容器详情

要获取容器的全部详情...

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$container_details = (new DockerApiRequest($server))
  ->containers(ResourceMethods::CONTAINERS_INSPECT, 'container_name')
  ->get();
获取容器统计信息

获取单个容器使用的资源,然后使用ContainerMetrics类获取容器的使用情况。

use Acamposm\DockerEngineApiPoller\ContainerMetrics;
use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;
$server = (new DockerServer())->server('192.168.10.101');

$container_stats = (new DockerApiRequest($server))
  ->containers(ResourceMethods::CONTAINERS_STATS, 'container_name')
  ->get();

$metrics = (new ContainerMetrics($container_stats))->metrics();

var_dump($metrics);

结果将是一个包含容器统计信息的JSON对象,可以保存到数据库中。

{
  "timestamp": "2020-09-20T19:00:05.491127778Z",
  "id": "2206b35c6fecc6ce320effb68492d8a79fd5f2e5f230dda9371fca8c822428df",
  "name": "/nextcloud",
  "cpu": {
    "count": 2,
    "percent_free": 99.9960912,
    "percent_used": 0.0039088
  },
  "memory": {
    "free": 8236134400,
    "used": 105889792,
    "total": 8342024192,
    "percent_free": 98.730646308823,
    "percent_used": 1.2693536911766
  },
  "network": [
    {
      "eth0": {
        "rx_bytes": 3337270,
        "rx_packets": 3306,
        "rx_errors": 0,
        "rx_dropped": 0,
        "tx_bytes": 1002431,
        "tx_packets": 2090,
        "tx_errors": 0,
        "tx_dropped": 0
      }
    }
  ]
}

镜像

获取镜像列表

获取Docker主机上所有镜像的列表。

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$images = (new DockerApiRequest($server))
  ->images(ResourceMethods::IMAGES_LIST)
  ->get();
获取镜像详情

获取镜像的详细信息。

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$image_details = (new DockerApiRequest($server))
  ->images(ResourceMethods::IMAGES_INSPECT, 'image_name')
  ->get();

网络

获取网络列表
use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$networks = (new DockerApiRequest($server))
  ->networks(ResourceMethods::NETWORKS_LIST)
  ->get();
获取网络详情

获取Docker主机上网络的详细信息。

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$network_details = (new DockerApiRequest($server))
  ->networks(ResourceMethods::NETWORKS_INSPECT, 'network_name')
  ->get();

获取卷列表

获取Docker主机上卷的列表。

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$volumes = (new DockerApiRequest($server))
  ->volumes(ResourceMethods::VOLUMES_LIST)
  ->get();
获取卷详情

获取Docker主机上卷的列表。

use Acamposm\DockerEngineApiPoller\DockerServer;
use Acamposm\DockerEngineApiPoller\DockerApiRequest;
use Acamposm\DockerEngineApiPoller\Enums\ResourceMethods;

$server = (new DockerServer())->server('192.168.10.101');

$volume_details = (new DockerApiRequest($server))
  ->volumes(ResourceMethods::VOLUMES_INSPECT, 'volume_name')
  ->get();

测试

composer test

变更日志

请参阅CHANGELOG以获取更多最近更改的信息。

贡献

感谢您考虑为改进此包做出贡献。请参阅CONTRIBUTING以获取详细信息。

安全漏洞

如果您发现任何与安全相关的问题,请通过angel.campos.m@outlook.com发送电子邮件给Angel Campos,而不是使用问题跟踪器。所有安全漏洞都将得到及时解决。

鸣谢

许可

此包Ping是开源包,并使用MIT许可证(MIT)授权。请参阅许可文件以获取更多信息。