如何找到Docker REST API URL?

时间:2016-05-12 06:25:33

标签: jenkins docker

我已经为Jenkins安装了Docker构建步骤插件。

文档告诉我:

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)

如何找到REST API的URL(我的主机上安装了Docker)?

4 个答案:

答案 0 :(得分:33)

如果您使用的是Linux并且需要连接到本地计算机上的Docker API,则其URL可能为unix:///var/run/docker.sock,就像文档中提到的那样: Develop with Docker Engine SDKs and API < / p>

  

默认情况下,Docker守护程序侦听unix:///var/run/docker.sock,并且客户端必须具有root访问权才能与守护程序进行交互。如果系统上存在名为docker的组,则docker会将套接字的所有权应用于该组。

如果您从a JetBrains IDE连接到Docker,这可能会有所帮助。

答案 1 :(得分:10)

这是两种方法。

如何远程访问Docker REST API?

  

警告:设置完成后,您的Docker REST API端口(在这种情况下为1111)暴露于远程   访问。

这是我在Ubuntu 16.04(Xenial Xerus)上启用它的方式。

  1. 编辑docker服务文件(最好避免直接编辑/lib/systemd/system/docker.service,因为它将在升级时替换)
sudo systemctl edit docker.service
  1. 添加以下内容
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:1111

对于docker 18+,内容有所不同:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:1111
  1. 保存修改后的文件。在这里,我使用了端口1111,但是可以使用任何空闲端口。

  2. 确保Docker服务注意到已修改的配置:

systemctl daemon-reload
  1. 重新启动Docker服务:
sudo service docker restart
  1. 测试
curl http://localhost:1111/version
  1. 查看结果
{"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"}

现在您可以使用REST API。

如何通过套接字(从本地主机)访问Docker REST API?

像这样连接内部Unix套接字,

使用卷发

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

这是使用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);
}

在PHP 7中,您可以将curl_setopt CURLOPT_UNIX_SOCKET_PATH 选项一起使用。

答案 2 :(得分:6)

这取决于您的主机,但请使用boot2docker VM查找/etc/default/docker/var/lib/boot2docker/profile(对于Docker Machine个主机。)

您将看到docker守护程序使用的端口,例如:

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

然后获取托管Docker守护程序的计算机的IP地址。 (使用Docker Machine创建主机,即:docker-machine ip <yourmachine>。)

要使用的URL是IP地址和端口的组合。

答案 3 :(得分:0)

如果您在Windows上:

npipe:////./pipe/docker_engine

来源:https://docs.docker.com/docker-for-windows/faqs/#how-do-i-connect-to-the-remote-docker-engine-api