web-dev-qa-db-fra.com

Comment trouver le Docker REST URL de l'API?

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)?

20
DenCowboy

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 .

33
Anton Belonovich

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).

  1. Editez le fichier /lib/systemd/system/docker.service

    Sudo vi /lib/systemd/system/docker.service
    
  2. Modifiez la ligne qui commence par ExecStart pour ressembler à ceci:

    ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:1111
    
  3. Enregistrez le fichier modifié. Ici, j'ai utilisé le port 1111, mais tout port libre peut être utilisé.

  4. Assurez-vous que le service Docker a bien noté la configuration modifiée:

    systemctl daemon-reload
    
  5. Redémarrez le service Docker:

    Sudo service docker restart
    
  6. Tester

    curl http://localhost:1111/version
    
  7. 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.

5
aimme

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.

5
VonC

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

0
Leonard AB