44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
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/>
|