acamposm / docker-engine-api-poller
一个Laravel包,允许Laravel应用程序查询Docker Engine API。
Requires
- php: >=7.4
- ext-json: *
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-16 23:36:01 UTC
README
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)授权。请参阅许可文件以获取更多信息。