docker - 创建和启动容器,API和CLI之间的差异

时间:2014-08-05 06:46:39

标签: docker

我想通过API创建一个(命名的)容器而不启动它(否则我必须立即手动停止它,不是很干净),并使用systemd将其作为服务进行管理,但我是CLI与所涉及的API之间有点混淆......

在API中,容器的一些参数在" start"阶段而不是创建,如volume-from,ports bindings,network mode等,而在CLI中,它只能通过run命令给出,而不是以start开头。

那么,如何使用API​​创建容器,然后使用cli启动它并仍然传递这些参数?

由于

1 个答案:

答案 0 :(得分:0)

创建容器时,您将定义要使用的图像以及要执行的命令:

POST /containers/create HTTP/1.1
Content-Type: application/json

{
     "Image":"busybox",
     "Cmd": "ls"
}

然后在启动容器时,您可以覆盖容器的某些配置(例如 Cmd ),但除此之外,您只需告诉它使用您的卷或端口绑定运行:

POST /containers/(id)/start HTTP/1.1
Content-Type: application/json

{
     "Binds":["/tmp:/tmp"],
     "PortBindings":{ "22/tcp": [{ "HostPort": "11022" }] }
}

CLI,特别是 docker run 创建,然后只需一步即可启动容器。

https://docs.docker.com/reference/api/docker_remote_api_v1.14

的API文档中获取的简化JSON块