使用Docker API无法创建映像

时间:2019-10-22 19:38:14

标签: docker

我正在尝试使用Docker API创建容器。我正在跑步:

 sudo curl \
     -XPOST --unix-socket /var/run/docker.sock \
     -d '{"Image":"nginx"}' \
     -H 'Content-Type: application/json' \
     http://localhost/containers/create

但我收到此消息:

{"message":"No such image: nginx:latest"}

是否应该下载映像(如果尚未下载的话)?

谢谢。

2 个答案:

答案 0 :(得分:2)

这是预期的行为。用于创建容器的REST API十分分步,并且'docker run'命令执行多项操作。

使用strace,即使是简单的docker run hello-world,您也可以看到它对API发出的一些POST请求,包括:

POST /v1.40/containers/create
POST /v1.40/images/create
POST /v1.40/containers/create
POST /v1.40/containers/[hash]/attach
POST /v1.40/containers/[hash]/wait
POST /v1.40/containers/[hash]/start

当第一个创建请求失败时,它将向前移动并拉出图像,然后重新发出创建。它还需要注意连接并启动容器。您需要模仿适合自己使用API​​的适当操作。

API Reference甚至喊出来:

  

大多数客户端命令直接映射到API端点(例如docker ps是GET /containers/json)。值得注意的例外是运行容器,其中包含多个API调用。

答案 1 :(得分:0)

好的,所以这是预期的行为,如:https://github.com/moby/moby/issues/30658