插件窝 干货文章 如何调用docker接口

如何调用docker接口

Docker containers 容器 API 520    来源:    2025-04-28

Docker API 调用指南

Docker 提供了多种 API 接口,可以通过这些接口管理容器、镜像、网络等。以下是调用 Docker API 的主要方法:

1. Docker Engine API (最常用)

Docker Engine API 是 RESTful API,默认监听在 Unix socket /var/run/docker.sock 或 TCP 端口 2375/2376。

基本调用方式

通过 Unix socket (推荐)

# 使用 curl 调用
curl --unix-socket /var/run/docker.sock http://localhost/v1.41/containers/json

# 查看所有 API 端点
curl --unix-socket /var/run/docker.sock http://localhost/v1.41/_ping

通过 TCP (需先配置)

# 先配置 Docker 启用 TCP 监听
# 编辑 /etc/docker/daemon.json 添加:
{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

# 然后重启 Docker
sudo systemctl restart docker

# 通过 TCP 调用
curl http://localhost:2375/v1.41/containers/json

常用 API 端点示例

  • 列出容器: GET /containers/json
  • 创建容器: POST /containers/create
  • 启动容器: POST /containers/{id}/start
  • 停止容器: POST /containers/{id}/stop
  • 删除容器: DELETE /containers/{id}
  • 列出镜像: GET /images/json
  • 构建镜像: POST /build

使用官方 SDK

Docker 提供了多种语言的 SDK:

Python (docker-py)

import docker

client = docker.DockerClient(base_url='unix://var/run/docker.sock')

# 列出所有容器
for container in client.containers.list():
    print(container.id)

# 运行新容器
client.containers.run('alpine', 'echo hello world')

Go

package main

import (
    "context"
    "fmt"
    "github.com/docker/docker/api/types"
    "github.com/docker/docker/client"
)

func main() {
    cli, err := client.NewClientWithOpts(client.FromEnv)
    if err != nil {
        panic(err)
    }

    containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{})
    if err != nil {
        panic(err)
    }

    for _, container := range containers {
        fmt.Printf("%s %s\n", container.ID[:10], container.Image)
    }
}

2. Docker Registry API

用于与镜像仓库交互 (如 Docker Hub):

# 获取镜像标签列表
curl https://registry.hub.docker.com/v2/repositories/library/nginx/tags/

# 认证后拉取镜像信息
curl -u username:password https://registry.hub.docker.com/v2/

安全注意事项

  1. 不要在生产环境开放未加密的 TCP 端口 (2375)
  2. 建议使用 TLS 加密的 2376 端口
  3. 配置适当的认证和授权
  4. 考虑使用 Docker 的 RBAC 功能

版本控制

Docker API 有版本控制,URL 中的 v1.41 对应 API 版本。可以使用以下命令查看 Docker 版本和支持的 API 版本:

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

希望这些信息对您有所帮助!如需更具体的 API 调用示例,请告诉我您想实现的具体功能。