class Client extends Client

Docker Client

Die API bezieht sich auf die Version 1.21 der Docker-API

Build

Mit Hilfe des Clients lassen sich Images bauen.

// Neues Image auf Basis des ubuntu-Images erstellen
$df = new \Alvine\Infrastructure\Docker\Build\Dockerfile('ubuntu');
$df->setMaintainer('[email protected]');
// Eine Datei an das neue Image übertragen
$df->addFile(new Alvine\IO\File\File('readme.txt'), '/opt/readme.txt');
// Update von Ubuntu ausführen
$df->addRun('apt-get update');

$docker =  new \Alvine\Infrastructure\Docker\Client(new \Alvine\Net\Resource\URI('http://localhost:8080/'));
// Image bauen
$stream = $docker->build($df);

// Ergebnis
echo (string) $stream;

Eventverarbeitung

Docker feuert für die unterschiedlichen Aktionen Events. Diese können über die API abgefragt werden. Dazu wird ein sogenannter Long-Call verwendet. Eine endlose HTTP-Abfrage.

$docker =  new \Alvine\Infrastructure\Docker\Client(new \Alvine\Net\Resource\URI('http://localhost:8080/'));

while(true) {
  $docker->handleEvents(function($event) use ($docker) {
      // Mit disppose kann man die Schleife verlassen
      if($event->getAction==='die') $docker->dispose();
  });
}

Constants

API_VERSION

Verwendete API-Version des Docker-Hosts

DEFAULTPORT

Defaultport von docker

Methods

ArrayHelper
getArrayFromJson(string $json, boolean $arrayHelperFlag = true)

Umwandlung eines Json in ein ArrayHelper-Objekt

getContainerByName(string $name)

Container mit Name suchen

Collection
getContainers(boolean $all = false, integer $limit = null, string $since = null, string $before = null, Collection $filters = null)

Liste aller Container auslesen

Archive
getContainerArchive(string $id, Directory $path = null)

Dateien aus dem Container auslesen und als Archive zurückgeben.

putContainerArchive($id, Archive $archive, $path = null, $noOverwriteDirNonDir = null)

Dateien in einen Container übertragen

Volume>
getVolumes(Collection $filters = null)

Volumes holen

getVolume(string $name)

Volume holen

createVolume(Volume $volume)

Volume erstellen

deleteVolume(string $name)

Volume löschen

inspectContainer(string $id)

Daten des Containers auslesen

createContainer(string $name = null, Config $config = null, HostConfig $hostConfig = null)

Neuen Container erstellen

runContainer(string $name = null, Config $config = null, HostConfig $hostConfig = null)

Neuen Container erstellen und starten

startContainer(string $id)

Container starten

array|ArrayHelper
getContainerStatsAsArray(string $id, boolean $returnHelper = true)

Direkte Ausgabe der Daten vom docker-Host als Array

getContainerStats(string $id)

Holt Statistiken zum laufendne Container

stopContainer(string $id)

Container stoppen

Collection
getProcesses(string $id)

In einem Container laufende Prozesse holen und als Collection zurückgeben.

array|ArrayHelper
getSystemInfoAsArray($returnHelper = true)

Direkte Ausgabe der Daten vom docker-Host als Array

getSystemInfo()

Systeminfo

restartContainer(string $id, integer $secondsToWait = 0)

Container neu starten

deleteContainer(string $id)

Container löschen

Image>
getImages()

Auf dem Host verfügbare Images holen

Image>
searchImageByRepoTag(RepoTag $repoTag)

Suche Image

inspectImage(string $id)

Holt Informationen zu einem Image

deleteImage(RepoTag $repoTag, boolean $force = false, boolean $noprune = false)

Löscht ein Image

pushImage(RepoTag $repoTag)

Überträgt Image an Repositorium

build(Dockerfile $dockerfile, RepoTag $repoTag = null, boolean $cache = true, boolean $verbose = true, Labels $labels = null, Map $extras = null)

Neues Image erstellen

getEventQueue()

EventQueue zurückgeben

Details

at line 101
protected ArrayHelper getArrayFromJson(string $json, boolean $arrayHelperFlag = true)

Umwandlung eines Json in ein ArrayHelper-Objekt

Parameters

string $json Json
boolean $arrayHelperFlag Rückgabetyp

Return Value

ArrayHelper

Exceptions

TypeException

at line 121
Container getContainerByName(string $name)

Container mit Name suchen

Parameters

string $name

Return Value

Container

Exceptions

NotFoundException

at line 143
Collection getContainers(boolean $all = false, integer $limit = null, string $since = null, string $before = null, Collection $filters = null)

Liste aller Container auslesen

Parameters

boolean $all Zeige alle Container an (inkl. Exit)
integer $limit Zeige $limit zuletzt erstellte Container an
string $since Zeige nur Contaier, die nach der ID erstellt wurden
string $before Zeige alle Container die vor der ID erstellt wurden
Collection $filters Filter

Return Value

Collection Collection-Objekt mit Container-Daten

Exceptions

ConnectionFailedException Verbindung nicht möglich

at line 207
Archive getContainerArchive(string $id, Directory $path = null)

Dateien aus dem Container auslesen und als Archive zurückgeben.

200 - success, returns archive of copied resource
400 - client error, bad parameter, details in JSON response body, one of:
      must specify path parameter (path cannot be empty)
      not a directory (path was asserted to be a directory but exists as a file)
404 - client error, resource not found, one of: – no such container (container id does not exist)
      no such file or directory (path does not exist)
500 - server error

SymLinks werden immer zum Ziel hin aufgelöst.

Das Archive kann über Archive::save($file) gespeichert oder über Archive::extractTo() weiterverarbeitet werden.

Parameters

string $id
Directory $path

Return Value

Archive

at line 240
Client putContainerArchive($id, Archive $archive, $path = null, $noOverwriteDirNonDir = null)

Dateien in einen Container übertragen

200 – the content was extracted successfully
400 - client error, bad parameter, details in JSON response body, one of:
      must specify path parameter (path cannot be empty)
      not a directory (path should be a directory but exists as a file)
      unable to overwrite existing directory with non-directory (if noOverwriteDirNonDir)
      unable to overwrite existing non-directory with directory (if noOverwriteDirNonDir)
403 - client error, permission denied, the volume or container rootfs is marked as read-only.
404 - client error, resource not found, one of: – no such container (container id does not exist)
      no such file or directory (path resource does not exist)
500 – server error

Das Zielverzeichnis muss vorhanden sein, ansonsten wird ein 404 zurückgemeldet

Parameters

$id
Archive $archive
$path
$noOverwriteDirNonDir

Return Value

Client

at line 258
Volume> getVolumes(Collection $filters = null)

Volumes holen

Parameters

Collection $filters

Return Value

Volume>

at line 297
Volume getVolume(string $name)

Volume holen

Parameters

string $name

Return Value

Volume

Exceptions

NotFoundException

at line 311
Volume createVolume(Volume $volume)

Volume erstellen

Parameters

Volume $volume

Return Value

Volume

at line 327
Client deleteVolume(string $name)

Volume löschen

Parameters

string $name

Return Value

Client

Exceptions

NotFoundException

at line 342
Container inspectContainer(string $id)

Daten des Containers auslesen

Parameters

string $id ID

Return Value

Container Container

Exceptions

ConnectionFailedException

at line 363
Container createContainer(string $name = null, Config $config = null, HostConfig $hostConfig = null)

Neuen Container erstellen

Es wird ein neuer Container erstellt. Wird keine Konfiguration angegeben, so wird ein Debian-Image verwendet.

Parameters

string $name Name
Config $config Konfiguration
HostConfig $hostConfig Host-Konfiguration

Return Value

Container Container

Exceptions

DockerException

at line 401
Container runContainer(string $name = null, Config $config = null, HostConfig $hostConfig = null)

Neuen Container erstellen und starten

Es wird ein neuer Container mit dem in der Konfiguration definiertem Images erstellt.

Parameters

string $name Name
Config $config Konfiguration
HostConfig $hostConfig Parameter

Return Value

Container Container

at line 417
Container startContainer(string $id)

Container starten

Ein vorhandener Container wird neu gestartet.

Parameters

string $id ContainerID

Return Value

Container Container

Exceptions

DockerException

at line 432
array|ArrayHelper getContainerStatsAsArray(string $id, boolean $returnHelper = true)

Direkte Ausgabe der Daten vom docker-Host als Array

Parameters

string $id Name oder ID
boolean $returnHelper

Return Value

array|ArrayHelper

at line 452
Stats getContainerStats(string $id)

Holt Statistiken zum laufendne Container

Die Abfrage wird mit stream=0 durchgeführt und liefert somit nur ein Ergebnis zurück.

Parameters

string $id Name oder ID

Return Value

Stats

Exceptions

NotFoundException

at line 465
Client stopContainer(string $id)

Container stoppen

Stop einen laufenden Container und sendet SIGTERM und nach einer kurzen Zeit SIGKILL

Parameters

string $id ContainerID

Return Value

Client Container

at line 480
Collection getProcesses(string $id)

In einem Container laufende Prozesse holen und als Collection zurückgeben.

Parameters

string $id ContainerID

Return Value

Collection

at line 496
array|ArrayHelper getSystemInfoAsArray($returnHelper = true)

Direkte Ausgabe der Daten vom docker-Host als Array

Parameters

$returnHelper

Return Value

array|ArrayHelper

at line 506
Info getSystemInfo()

Systeminfo

Return Value

Info

at line 518
Client restartContainer(string $id, integer $secondsToWait = 0)

Container neu starten

Parameters

string $id ContainerID
integer $secondsToWait Anzahl der Sekunden die gewrtet werden soll

Return Value

Client Container

at line 531
Client deleteContainer(string $id)

Container löschen

Parameters

string $id ContainerID

Return Value

Client

at line 545
Image> getImages()

Auf dem Host verfügbare Images holen

Return Value

Image> Collection mit Imagedaten

Exceptions

ConnectionFailedException
DockerException Verbindung nicht möglich

at line 582
Image> searchImageByRepoTag(RepoTag $repoTag)

Suche Image

Parameters

RepoTag $repoTag

Return Value

Image> Collection mit Imagedaten

Exceptions

ConnectionFailedException
DockerException Verbindung nicht möglich

at line 605
Image inspectImage(string $id)

Holt Informationen zu einem Image

Parameters

string $id

Return Value

Image Image

at line 624
Client deleteImage(RepoTag $repoTag, boolean $force = false, boolean $noprune = false)

Löscht ein Image

Parameters

RepoTag $repoTag ImageTag
boolean $force Force
boolean $noprune Lösche keine untagged Elternimages

Return Value

Client Dieses Objekt

at line 640
Client pushImage(RepoTag $repoTag)

Überträgt Image an Repositorium

Parameters

RepoTag $repoTag ImageTag

Return Value

Client

at line 677
ResultStream build(Dockerfile $dockerfile, RepoTag $repoTag = null, boolean $cache = true, boolean $verbose = true, Labels $labels = null, Map $extras = null)

Neues Image erstellen

Dieser Aufruf führt die Anweisungen in dem übergebenen ockerfile aus und erstell ein Image. Das Ergebnis wird in dem ResultStream gesammelt und zurückgegeben.

Über $extras können folgende Werte übergeben werden

remote – A Git repository URI or HTTP/HTTPS context URI. If the URI points to a single text file, the file’s contents are placed into a file called Dockerfile and the image is built from that file. If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build. If the URI points to a tarball and the dockerfile parameter is also specified, there must be a file with the corresponding path inside the tarball. pull - Attempt to pull the image even if an older image exists locally. rm - Remove intermediate containers after a successful build (default behavior). forcerm - Always remove intermediate containers (includes rm). memory - Set memory limit for build. memswap - Total memory (memory + swap), -1 to enable unlimited swap. cpushares - CPU shares (relative weight). cpusetcpus - CPUs in which to allow execution (e.g., 0-3, 0,1). cpuperiod - The length of a CPU period in microseconds. cpuquota - Microseconds of CPU time that the container can get in a CPU period. buildargs – JSON map of string pairs for build-time variables. Users pass these values at build-time. Docker uses the buildargs as the environment context for command(s) run via the Dockerfile’s RUN instruction or for variable expansion in other Dockerfile instructions. This is not meant for passing secret values. Read more about the buildargs instruction shmsize - Size of /dev/shm in bytes. The size must be greater than 0. If omitted the system uses 64MB.

Parameters

Dockerfile $dockerfile Dockerfile
RepoTag $repoTag ImageTag des fertigen Images
boolean $cache Chache aktivieren
boolean $verbose Verbose
Labels $labels Labels
Map $extras Extra-Parameter

Return Value

ResultStream Ergebnis des Builds

at line 712
EventQueue getEventQueue()

EventQueue zurückgeben

Return Value

EventQueue