J'ai installé le plug-in Docker Build Step pour Jenkins.
La documentation me dit:
Name : Choose a name for this Docker cloud provider
Docker URL: The URL to use to access your Docker server API (e.g: http://172.16.42.43:4243)
Comment trouver mon URL vers l'API REST (Docker est installé sur mon hôte)?
Si vous êtes sous Linux et que vous devez vous connecter à l'API Docker sur la machine locale, son URL est probablement unix:///var/run/docker.sock
, comme indiqué dans la documentation: Développer avec les kits de développement logiciel (SDK) et l'API de Docker Engine
Par défaut, le démon Docker écoute sur
unix:///var/run/docker.sock
et le client doit disposer d'un accès root pour interagir avec le démon. Si un groupe nommé docker existe sur votre système, docker attribue la propriété du socket au groupe.
Cela peut être utile si vous vous connectez à Docker à partir de un JetBrains IDE .
Voici deux approches.
Comment puis-je accéder à distance à l'API Docker REST?
Avertissement: après cette configuration, votre port d’API Docker REST (dans ce cas 1111) est exposé à remote accès.
Voici comment je l'ai activé sur Ubuntu 16.04 (Xenial Xerus).
Editez le fichier /lib/systemd/system/docker.service
Sudo vi /lib/systemd/system/docker.service
Modifiez la ligne qui commence par ExecStart pour ressembler à ceci:
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:1111
Enregistrez le fichier modifié. Ici, j'ai utilisé le port 1111, mais tout port libre peut être utilisé.
Assurez-vous que le service Docker a bien noté la configuration modifiée:
systemctl daemon-reload
Redémarrez le service Docker:
Sudo service docker restart
Tester
curl http://localhost:1111/version
Voir le résultat
{"Version":"17.05.0-ce","ApiVersion":"1.29","MinAPIVersion":"1.12","GitCommit":"89658be","GoVersion":"go1.7.5","Os":"linux","Arch":"AMD64","KernelVersion":"4.15.0-20-generic","BuildTime":"2017-05-04T22:10:54.638119411+00:00"}
Vous pouvez maintenant utiliser l'API REST.
Comment puis-je accéder à l'API Docker REST via un socket (à partir de localhost)?
Connectez le socket Unix interne un peu comme ça,
En utilisant curl
curl --unix-socket /var/run/docker.sock http:/localhost/version
Et voici comment faire en utilisant PHP
$fs = fsockopen('/var/run/docker.sock');
fwrite($fs, "GET / HTTP/1.1\r\nHOST: http:/images/json\r\n\r\n");
while (!feof($fs)) {
print fread($fs,256);
}
Dans PHP 7, vous pouvez utiliser curl_setopt avec l’option CURLOPT_UNIX_SOCKET_PATH.
Cela dépend de votre hôte, mais cherchez /etc/default/docker
ou /var/lib/boot2docker/profile
(pour Docker Machine hosts utilisant une machine virtuelle boot2docker).
Vous verrez le port utilisé par le démon docker, par exemple:
DOCKER_OPTS="-H unix:// -H tcp://0.0.0.0:2375"
^^^^^
Ensuite, obtenez l'adresse IP de la machine hébergeant votre démon Docker . (Avec un hôte créé par la machine Docker, ce serait: docker-machine ip <yourmachine>
.)
L'URL à utiliser est la combinaison de ceux-ci, l'adresse IP et le port.
Si vous êtes sur Windows:
npipe:////./pipe/docker_engine
source: https://docs.docker.com/docker-for-windows/faqs/#how-do-i-connect-to-the-remote-docker-engine-api