【问题标题】:Call Docker API without docker daemon在没有 docker daemon 的情况下调用 Docker API
【发布时间】:2016-05-19 15:02:09
【问题描述】:

我想知道有没有办法在没有docker daemon 的情况下调用 Docker API。

我浏览了他们的文档和一些 Docker CLI 背后的源代码,但找不到答案。

我想直接对 Docker API 进行 HTTP/HTTPS 调用!我不想安装docker CLI。这有可能吗?你能举个例子吗?

编辑:

我想进行 Docker Registry API 调用,而不必安装 docker 来测试凭据,稍后我将使用它来执行 docker login 命令。

【问题讨论】:

    标签: docker docker-api


    【解决方案1】:

    我认为你的问题有点混乱。 没有 Docker 守护程序您无法调用 Docker API,因为 API 守护程序(或者至少,守护程序公开了 API)。

    您当然可以在没有 Docker client 的情况下向(控制)API / 守护进程发出请求。只需直接在套接字 (unix:///var/run/docker.sock) 上触发您的请求。或者,如果您想将其公开为 HTTP(S 推荐),则可以通过更改守护程序启动选项来实现此目的,而是通过 HTTP(S) 向该地址发送请求。

    【讨论】:

    • 还有很多不同语言的库来包装这种交互,例如python的docker-py。
    • 感谢您的回复。问题是我的机器上不能有docker daemon。你是说 API 只通过 daemon 暴露,没有其他地方暴露?
    • 另外,我只需要docker login API 调用,不用守护进程就可以实现吗?
    • 守护进程是完成所有工作的东西。您需要连接到一个守护进程 somewhere 才能工作。
    【解决方案2】:

    docker CLI dockerd

    docker CLI 使用 Docker Engine API 与 docker 守护进程通信。最新版本是v1.41

    CLI 和守护进程不需要在同一台机器上。通过设置 docker 上下文,您可以指示 docker CLI 与远程 docker 守护进程通信,因此无需在本地安装 Docker。同样,如果您使用 curl 或任何其他 SDK 发出 Docker Engine API 调用,您可以使用 unix:///var/run/docker.sock 作为本地守护程序(如果已安装)或远程守护程序的 URL。

    dockerd Docker 注册表

    Docker 守护程序使用 Docker Registry API 与 Docker Registry 进行通信。最新版本是v2docker pull alpine 告诉当前 context 中的守护进程向 DockerHub 的 https://registry-1.docker.io/v2 端点发出 Docker Registry API 调用,而 docker pull registry.gitlab.com/username/image:tag 告诉守护进程向https://registry.gitlab.com/v2 您的私有 GitLab 容器注册表中的端点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-21
      • 2018-08-19
      • 2020-08-23
      • 2022-09-24
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多