Eine .NET Client API wird offiziell von Microsoft gepflegt.
Quellcode: GitHub
Package: Nuget
Hinweis: Die Pakete werden nicht synchron mit den Änderungen am Quellcode veröffentlicht.
Bestimmte Funktionen z.B. die Unterstützung für Swarm steht nur als Quellcode bereit.
Verbindungsaufbau
Für den Aufbau der Verbindung können verschiedene Protokolle z.B. Http oder Linux-Sockets verwendet.
Letztes erlaubt auch die Verwendung in einem Container.
Windows (Docker for Windows)
var client = new DockerClientConfiguration(new Uri(http://localhost:2375)).CreateClient();
Linux (innerhalb eines Container)
var client = new DockerClientConfiguration(new Uri(unix://var/run/docker.sock)).CreateClient();
Bei Start benötigt der Container zusätzliche Rechte
docker run -d --privileged user/myimage
Abfrage Images
var imageParams = new ImagesListParameters{ MatchName = "ubuntu" };
var images = await client.Images.ListImagesAsync(imageParams);
Abfrage Container
var listParam = new ContainersListParameters
{
Filters = new Dictionary<string, IDictionary<string, bool>>
{
{"name", new Dictionary<string, bool> {{"pingtest", true}}}
}
};
var result = await client.Containers.ListContainersAsync(listParam)
Container erstellen
Das Ergebnis der Erstellung enthält u.a. die vergebene Container-ID.
Wichtig: Erstellte Container sind nicht gestartet.
var createParam = new CreateContainerParameters
{ Image = "ubuntu:latest",
Cmd = new List<string> {"echo", "hallo world"},
Name = "halloworldtest" };
var result = await client.Containers.CreateContainerAsync(createParam);
Container starten
await client.Containers.StartContainerAsync(containerId, null);
Container stoppen
await client.Containers.StopContainerAsync(containerId,
new ContainerStopParameters(), CancellationToken.None);
Beispiel: Webhook für automatische Bereitstellung
Konfiguration des Webhook
- Login beim Docker Hub
- Auswahl des Repository
- Webhooks -> Create a Webhook
- Name und Ziel-URL festlegen
- Speichern