An open API service indexing awesome lists of open source software.

https://github.com/uuf6429/phpdocker

🐘+🐳 - PHP library providing a simple API for Docker cli
https://github.com/uuf6429/phpdocker

docker docker-compose docker-machine php php-library

Last synced: about 2 months ago
JSON representation

🐘+🐳 - PHP library providing a simple API for Docker cli

Awesome Lists containing this project

README

          

# PHPDocker

[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg)](https://php.net/)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/uuf6429/rune/master/LICENSE)
[![Docker](https://img.shields.io/badge/d-3%25-0db7ed.svg)](#supported-commands)
[![Docker Compose](https://img.shields.io/badge/c-20%25-0db7ed.svg)](#supported-commands)
[![Docker Machine](https://img.shields.io/badge/m-60%25-0db7ed.svg)](#supported-commands)

PHP library providing a simple API for [Docker cli](https://docs.docker.com/engine/reference/commandline/cli/).

## Table of Contents

- [PHPDocker](#phpdocker)
- [Table of Contents](#table-of-contents)
- [Why?](#why)
- [Installation](#installation)
- [Usage](#usage)
- [Supported Commands](#supported-commands)
- [Documentation](#documentation)

## Why?

Many operations in Docker are exposed via a [REST API](https://docs.docker.com/engine/api/latest/), however, some commands (eg, `docker-compose`) cannot be used from the API (because `docker-compose` itself uses the low-level API).
Additionally, if you use the REST API, you'll end up doing what the Docker cli is already doing for you.
In some cases it makes sense to use the low-level API, in which case you can use [another PHP library](https://github.com/docker-php/docker-php).

If, however, all you want is to jump in and start using Docker from your PHP application, this library fits the purpose well.

**TL:DR;**
- why not?
- supports more functionality _(eg; `docker-toolbox`)_
- fixes common issues _(eg; Docker from Docker Toolbox misses configuration and refuses to run outside of the Quickstart Terminal)_

## Installation

First [install Composer](https://getcomposer.org/download/) and then run the following command in your project directory:

```bash
composer require uuf6429/phpdocker
```

## Usage

This library requires either [native Docker](https://www.docker.com/community-edition#download) or [Docker Toolbox](https://docs.docker.com/toolbox/overview/).

Two interfaces are provided, both of which start with the [Manager](/DOCS.md#phpdockermanager) class:

- **Procedural**

Everything can be done through the manager object and a whole process can be achieved through the use of method chaining.

```php
$manager = new \PHPDocker\Manager();
$manager->docker->run('some-image', 'my-container');

// ... later on ...
$manager->docker->stop('my-container');
```

- **Object Oriented**

A reference object can be "created" for easy passing through your code while avoiding passing the manager object or state/config.

The example below shows how one can save a reference to the running container and load it back later on to stop it (assuming the container is still running).

```php
$manager = new \PHPDocker\Manager();
$container = $manager->docker
->run('some-image', 'my-container')
->find('my-container');
file_put_contents('cont1.txt', serialize($container));

// ... later on ...
$container = unserialize(file_get_contents('cont1.txt'));
$container->stop();
```

**TL:DR;** In short, `->docker->%action%('xyz')` is equivalent to `->docker->find('xyz')->%action%()`.

## Supported Commands

- ✅ _Fully implemented._
-   ?   _Incomplete (check method for details)._
- ❌ _Not implemented yet._
-  ✱  _Not (and won't be) implemented._


Docker (3%)Docker Compose (20%)Docker Machine (60%)



❌ docker attach

❌ docker build

❌ docker checkpoint

❌ docker checkpoint create

❌ docker checkpoint ls

❌ docker checkpoint rm

docker commit

❌ docker config

❌ docker config create

❌ docker config inspect

❌ docker config ls

❌ docker config rm

❌ docker container

❌ docker container attach

❌ docker container commit

❌ docker container cp

❌ docker container create

❌ docker container diff

❌ docker container exec

❌ docker container export

❌ docker container inspect

❌ docker container kill

❌ docker container logs

❌ docker container ls

❌ docker container pause

❌ docker container port

❌ docker container prune

❌ docker container rename

❌ docker container restart

❌ docker container rm

❌ docker container run

❌ docker container start

❌ docker container stats

❌ docker container stop

❌ docker container top

❌ docker container unpause

❌ docker container update

❌ docker container wait

docker cp

❌ docker create

❌ docker deploy

❌ docker diff

❌ docker events

❌ docker exec

❌ docker export

❌ docker history

❌ docker image

❌ docker image build

❌ docker image history

❌ docker image import

❌ docker image inspect

❌ docker image load

❌ docker image ls

❌ docker image prune

❌ docker image pull

❌ docker image push

❌ docker image rm

❌ docker images

❌ docker image save

❌ docker image tag

❌ docker import

❌ docker info

❌ docker inspect

❌ docker kill

❌ docker load

❌ docker login

❌ docker logout

❌ docker logs

❌ docker network

❌ docker network connect

❌ docker network create

❌ docker network disconnect

❌ docker network inspect

❌ docker network ls

❌ docker network prune

❌ docker network rm

❌ docker node

❌ docker node demote

❌ docker node inspect

❌ docker node ls

❌ docker node promote

❌ docker node ps

❌ docker node rm

❌ docker node update

❌ docker pause

❌ docker plugin

❌ docker plugin create

❌ docker plugin disable

❌ docker plugin enable

❌ docker plugin inspect

❌ docker plugin install

❌ docker plugin ls

❌ docker plugin push

❌ docker plugin rm

❌ docker plugin set

❌ docker plugin upgrade

❌ docker port

❌ docker ps

❌ docker pull

❌ docker push

❌ docker rename

❌ docker restart

  ?   docker rm

❌ docker rmi

  ?   docker run

❌ docker save

❌ docker search

❌ docker secret

❌ docker secret create

❌ docker secret inspect

❌ docker secret ls

❌ docker secret rm

❌ docker service

❌ docker service create

❌ docker service inspect

❌ docker service logs

❌ docker service ls

❌ docker service ps

❌ docker service rm

❌ docker service scale

❌ docker service update

❌ docker stack

❌ docker stack deploy

❌ docker stack ls

❌ docker stack ps

❌ docker stack rm

❌ docker stack services

❌ docker start

❌ docker stats

❌ docker stop

❌ docker swarm

❌ docker swarm ca

❌ docker swarm init

❌ docker swarm join

❌ docker swarm join-token

❌ docker swarm leave

❌ docker swarm unlock

❌ docker swarm unlock-key

❌ docker swarm update

❌ docker system

❌ docker system df

❌ docker system events

❌ docker system info

❌ docker system prune

❌ docker tag

❌ docker top

❌ docker unpause

❌ docker update

docker version

❌ docker volume

❌ docker volume create

❌ docker volume inspect

❌ docker volume ls

❌ docker volume prune

❌ docker volume rm

❌ docker wait



docker-compose build

❌ docker-compose bundle

❌ docker-compose config

❌ docker-compose create

docker-compose down

❌ docker-compose events

docker-compose exec

 ✱  docker-compose help

❌ docker-compose images

❌ docker-compose kill

❌ docker-compose logs

❌ docker-compose pause

❌ docker-compose port

❌ docker-compose ps

❌ docker-compose pull

❌ docker-compose push

❌ docker-compose restart

docker-compose rm

❌ docker-compose run

❌ docker-compose scale

❌ docker-compose start

❌ docker-compose stop

❌ docker-compose top

❌ docker-compose unpause

❌ docker-compose up

docker-compose version



docker-machine active

❌ docker-machine config

❌ docker-machine create

docker-machine env

 ✱  docker-machine help

❌ docker-machine inspect

docker-machine ip

docker-machine kill

❌ docker-machine ls

❌ docker-machine provision

❌ docker-machine regenerate-certs

docker-machine restart

docker-machine rm

❌ docker-machine scp

❌ docker-machine ssh

docker-machine start

docker-machine status

docker-machine stop

docker-machine upgrade

docker-machine url

docker-machine version



## [Documentation](/DOCS.md)

Complete up-to-date API documentation can be found [here](/DOCS.md).