【发布时间】:2018-06-25 10:15:39
【问题描述】:
我正在尝试使用 docker-java 启动一个 docker 容器。
使用 DockerClient.startContainerCmd 方法对我有用,但我需要使用参数启动容器。
从这个方法返回的StartContainerCmd 类在我执行之前没有任何方法来提供参数。
有办法吗?
【问题讨论】:
标签: java docker docker-java
我正在尝试使用 docker-java 启动一个 docker 容器。
使用 DockerClient.startContainerCmd 方法对我有用,但我需要使用参数启动容器。
从这个方法返回的StartContainerCmd 类在我执行之前没有任何方法来提供参数。
有办法吗?
【问题讨论】:
标签: java docker docker-java
StartContainerCmd 委托给StartContainerCmdExec,它抽象了Start Container REST 操作。 Operation只有一个路径参数(容器的id)。如果您需要提供其他参数,则需要使用这些参数创建容器:
CreateContainerResponse container = dockerClient.createContainerCmd(IMAGE_NAME)
.withCmd("cmd", "arg1", "arg2").exec()
获取容器的id,然后启动它:
dockerClient.startContainerCmd(container.getId()).exec();
【讨论】:
它应该很容易与https://www.github.com/amihaiemil/docker-java-api一起工作:
final Docker docker = new LocalDocker(...);//or RemoteDocker(...)
final Container container = docker.containers().create(/*JsonObject*/).start();
传递给 Containers.create(...) 的 JsonObject 应该是 Docker 的 API 期望作为输入的对象(请参阅 API 文档)。在那个 JsonObject 中,您还应该能够指定启动脚本。
【讨论】: