How do I find the Docker REST API URL?

后端 未结 4 876
面向向阳花
面向向阳花 2020-12-02 12:16

I have installed the Docker build step plugin for Jenkins.

The documentation is telling me:

Name      : Choose a name for this Docker cloud provider
         


        
相关标签:
4条回答
  • 2020-12-02 12:48

    If you are on Linux and need to connect to Docker API on the local machine, its URL is probably unix:///var/run/docker.sock, like it is mentioned in documentation: Develop with Docker Engine SDKs and API

    By default the Docker daemon listens on unix:///var/run/docker.sock and the client must have root access to interact with the daemon. If a group named docker exists on your system, docker applies ownership of the socket to the group.

    This might be helpful if you are connecting to Docker from a JetBrains IDE.

    0 讨论(0)
  • 2020-12-02 13:00

    If you are on 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 讨论(0)
  • 2020-12-02 13:01

    Here are two approaches.

    How do I access the Docker REST API remotely?

    Warning: After this setup your Docker REST API port (in this case 1111) is exposed to remote access.

    Here is how I enabled it on Ubuntu 16.04 (Xenial Xerus).

    1. Edit the docker service file (it is better to avoid directly editing /lib/systemd/system/docker.service as it will be replaced on upgrades)
    sudo systemctl edit docker.service
    
    1. Add the following content
    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:1111
    

    For docker 18+, the content is a bit different:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:1111
    
    1. Save the modified file. Here I used port 1111, but any free port can be used.

    2. Make sure the Docker service notices the modified configuration:

    systemctl daemon-reload
    
    1. Restart the Docker service:
    sudo service docker restart
    
    1. Test
    curl http://localhost:1111/version
    
    1. See the result
    {"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"}
    

    Now you can use the REST API.

    How do I access the Docker REST API through a socket (from localhost)?

    Connect the internal Unix socket somewhat like this,

    Using curl

    curl --unix-socket /var/run/docker.sock http:/localhost/version
    

    And here is how to do it using 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);
    }
    

    In PHP 7 you can use curl_setopt with the CURLOPT_UNIX_SOCKET_PATH option.

    0 讨论(0)
  • 2020-12-02 13:07

    It depends on your host, but look for /etc/default/docker or /var/lib/boot2docker/profile (for Docker Machine hosts using a boot2docker VM).

    You will see the port used by the docker daemon, for instance:

    DOCKER_OPTS="-H unix:// -H tcp://0.0.0.0:2375"
                                            ^^^^^
    

    Then get the IP address of the machine hosting your Docker daemon. (With a Docker Machine created host, that would be: docker-machine ip <yourmachine>.)

    The URL to use is the combination of those the IP address and the port.

    0 讨论(0)
提交回复
热议问题