Client
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
Umwandlung eines Json in ein ArrayHelper-Objekt
Container mit Name suchen
Liste aller Container auslesen
Dateien aus dem Container auslesen und als Archive zurückgeben.
Dateien in einen Container übertragen
Volumes holen
Volume löschen
Daten des Containers auslesen
Neuen Container erstellen
Neuen Container erstellen und starten
Container starten
Direkte Ausgabe der Daten vom docker-Host als Array
Holt Statistiken zum laufendne Container
Container stoppen
In einem Container laufende Prozesse holen und als Collection zurückgeben.
Direkte Ausgabe der Daten vom docker-Host als Array
Systeminfo
Container neu starten
Container löschen
Auf dem Host verfügbare Images holen
Holt Informationen zu einem Image
Neues Image erstellen
EventQueue zurückgeben
Details
at line 101
protected ArrayHelper
getArrayFromJson(string $json, boolean $arrayHelperFlag = true)
Umwandlung eines Json in ein ArrayHelper-Objekt
at line 121
Container
getContainerByName(string $name)
Container mit Name suchen
at line 143
Collection
getContainers(boolean $all = false, integer $limit = null, string $since = null, string $before = null, Collection $filters = null)
Liste aller Container auslesen
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.
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
at line 258
Volume>
getVolumes(Collection $filters = null)
Volumes holen
at line 297
Volume
getVolume(string $name)
Volume holen
at line 327
Client
deleteVolume(string $name)
Volume löschen
at line 342
Container
inspectContainer(string $id)
Daten des Containers auslesen
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.
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.
at line 417
Container
startContainer(string $id)
Container starten
Ein vorhandener Container wird neu gestartet.
at line 432
array|ArrayHelper
getContainerStatsAsArray(string $id, boolean $returnHelper = true)
Direkte Ausgabe der Daten vom docker-Host als Array
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.
at line 465
Client
stopContainer(string $id)
Container stoppen
Stop einen laufenden Container und sendet SIGTERM und nach einer kurzen Zeit SIGKILL
at line 480
Collection
getProcesses(string $id)
In einem Container laufende Prozesse holen und als Collection zurückgeben.
at line 496
array|ArrayHelper
getSystemInfoAsArray($returnHelper = true)
Direkte Ausgabe der Daten vom docker-Host als Array
at line 506
Info
getSystemInfo()
Systeminfo
at line 518
Client
restartContainer(string $id, integer $secondsToWait = 0)
Container neu starten
at line 531
Client
deleteContainer(string $id)
Container löschen
at line 545
Image>
getImages()
Auf dem Host verfügbare Images holen
at line 582
Image>
searchImageByRepoTag(RepoTag $repoTag)
Suche Image
at line 605
Image
inspectImage(string $id)
Holt Informationen zu einem Image
at line 624
Client
deleteImage(RepoTag $repoTag, boolean $force = false, boolean $noprune = false)
Löscht ein Image
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.
at line 712
EventQueue
getEventQueue()
EventQueue zurückgeben