【问题标题】:How can I use REST API to interact with the Docker engine?如何使用 REST API 与 Docker 引擎进行交互?
【发布时间】:2018-07-22 10:03:54
【问题描述】:

我们可以使用命令docker images 列出我们在本地主机上的 Docker 镜像。

现在我想通过在 Firefox 或 Chrome 中发送 HTTP GET 请求从远程服务器获取相同的信息。 Docker 是否提供了一些 REST API 来执行此操作?

我做了很多搜索。例如: Examples using the Docker Engine SDKs and Docker API

它提供了一种类似这样的方式:

curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json

我对 Unix 套接字知之甚少,但我认为这不是我想要的。 URL (http:/v1.24/containers/json) 太奇怪了,甚至没有服务器名称。我认为它不能在远程服务器上运行。 (它确实在本地服务器上工作。)

Docker 是否提供有关此主题的任何官方文档?

【问题讨论】:

标签: rest api http docker


【解决方案1】:

您需要在端口上公开 Docker 守护程序。

您可以使用多个 -H 选项将 Docker 守护进程配置为同时侦听多个套接字:

使用默认的 Unix 套接字,并在此主机上的两个特定 IP 地址上侦听。

$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2

Docker 客户端将遵循 DOCKER_HOST 环境变量来为客户端设置 -H 标志。使用以下命令之一:

https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option

您需要通过创建 systemd 插件来做到这一点:

mkdir -p /etc/systemd/system/docker.service.d/
cat > /etc/systemd/system/docker.service.d/10_docker.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2376
EOF

然后重新加载并重启 Docker:

systemctl daemon-reload
systemctl restart docker

注意:这样你会暴露你的主机,你不应该在生产中这样做。请在我之前分享的链接上阅读更多相关信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多