2022-09-20 15:07:02 +00:00
|
|
|
|
Utiliser l'API de Docker
|
|
|
|
|
========================
|
|
|
|
|
|
|
|
|
|
Le Docker Engine expose une API REST sur le protocole HTTP. Comme première
|
|
|
|
|
tentative, vous pouvez essayer de récupérer des informations générales avec un
|
|
|
|
|
simple `curl` :
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
curl -s --unix-socket /var/run/docker.sock http://localhost/v1.38/info | jq .
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
On retrouve un objet JSON contenant des informations similaires à ce que l'on
|
|
|
|
|
obtient avec un `docker info`.
|
|
|
|
|
|
|
|
|
|
Le premier élément dans le chemin de l'URL correspond à la version de l'API que
|
|
|
|
|
l'on souhaite utiliser. Celle-ci change dès que des fonctionnalités sont
|
|
|
|
|
ajoutées, à l'occasion d'une nouvelle version. Il n'est généralement pas
|
|
|
|
|
nécessaire de mettre à jour cette version dans les programmes que vous
|
|
|
|
|
développez car l'API est rétro-compatible : les anciennes versions de l'API
|
|
|
|
|
restent accessibles.
|
|
|
|
|
|
|
|
|
|
Pour réaliser cet exercice, vous pouvez utiliser le langage de votre choix, en
|
|
|
|
|
utilisant des outils ou des bibliothèques cohérents avec l'objectif recherché :
|
|
|
|
|
dialoguer avec l'API.
|
|
|
|
|
|
|
|
|
|
Si vous êtes à l'aise en Python ou en Go, vous devriez utiliser les SDK
|
|
|
|
|
officiels :
|
|
|
|
|
|
|
|
|
|
- Python : <https://docker-py.readthedocs.io/en/stable/client.html>,
|
|
|
|
|
- Go : <https://pkg.go.dev/github.com/docker/docker/client>.
|
|
|
|
|
|
|
|
|
|
Pour le C, C#, C++, Clojure, Dart, Erlang, Gradle, Groovy, Haskell, Java,
|
|
|
|
|
NodeJS, Perl, PHP, Ruby, Rust, Scala, Swift, des SDK plus ou moins complets
|
|
|
|
|
sont disponibles :\
|
|
|
|
|
<https://docs.docker.com/engine/api/sdk/#unofficial-libraries>
|
|
|
|
|
|
|
|
|
|
Mais pas de panique si cela ne vous convient pas, l'API est assez succincte et
|
|
|
|
|
très bien documentée. N'importe quel langage dans lequel il vous est aisé de
|
|
|
|
|
faire des requêtes HTTP et parser du JSON fait très bien l'affaire, y compris
|
|
|
|
|
en shell.
|
|
|
|
|
|
|
|
|
|
Retrouvez la documentation de l'API ici :\
|
|
|
|
|
<https://docs.docker.com/engine/api/latest/>
|