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
- Host: GitHub
- URL: https://github.com/uuf6429/phpdocker
- Owner: uuf6429
- License: mit
- Created: 2017-11-09T23:20:47.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-31T01:46:28.000Z (over 8 years ago)
- Last Synced: 2026-01-15T21:38:34.301Z (6 months ago)
- Topics: docker, docker-compose, docker-machine, php, php-library
- Language: PHP
- Homepage:
- Size: 91.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PHPDocker
[](https://php.net/)
[](https://raw.githubusercontent.com/uuf6429/rune/master/LICENSE)
[](#supported-commands)
[](#supported-commands)
[](#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).