我正在尝试使用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"}
是否应该下载映像(如果尚未下载的话)?
谢谢。
答案 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