我想使用docker java client创建和运行docker。我想要运行这样的东西:
docker run -d -p 4444:4444 --name selenium-hub selenium/hub:2.53.0
如何在docker-java客户端上实现此命令?到目前为止,这是我的代码:
CreateContainerResponse response = dockerClient.createContainerCmd("selenium/hub")
.withName(name)
.exec();
实际上IDK如何指定-d(用于在后台运行)。和-p。 请帮我。抱歉,我是Docker的新手。
答案 0 :(得分:2)
docker-java在https://github.com/docker-java/docker-java/wiki上有一个不错的wiki。正在搜索" port"得到了我:
创建新的Docker容器并使用公开的端口启动它
ExposedPort tcp22 = ExposedPort.tcp(22); ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); portBindings.bind(tcp22, Ports.Binding(11022)); portBindings.bind(tcp23, Ports.Binding(11023)); CreateContainerResponse container = dockerClient.createContainerCmd("busybox") .withCmd("true") .withExposedPorts(tcp22, tcp23) .withPortBindings(portBindings) .exec();
我查看了docker-java中的一些测试,看起来你只完成了运行容器的一半工作,因为你只是创建了容器并且没有开始它。根据我在此测试中看到的内容(https://github.com/docker-java/docker-java/blob/069987852c842e3bba85ed3325a8877c36f9e87f/src/test/java/com/github/dockerjava/core/command/ExecStartCmdImplTest.java#L69),您的代码应如下所示:
ExposedPort tcp4444 = ExposedPort.tcp(4444);
Ports portBindings = new Ports();
portBindings.bind(tcp4444, Ports.Binding(4444));
// Create the container (it will not be running)
CreateContainerResponse container = dockerClient.createContainerCmd("selenium/hub")
.withName(name)
.withExposedPorts(tcp4444)
.withPortBindings(portBindings)
.exec();
// Actually run the container
dockerClient.startContainerCmd(container).exec();
据我所知,没有理由在分离模式下显式运行它,因为默认情况下它会异步启动。
答案 1 :(得分:1)
docker-java版本3.1.0已将SELECT *
FROM search
WHERE content REGEXP REPLACE(?, ' ', '|');
类从?
类移动到withPortBindings
类。
这是更新的方法:
CreateContainerCmd
作为一个旁注,我不得不去看看docker-java存储库中的单元测试,以找到执行此操作的方法。似乎是找到可行示例的地方。
答案 2 :(得分:0)
找到解决方案......如果有人找到更好的解决方案,请在此处发帖。我已经将代码修改为:
ExposedPort tcp4444 = ExposedPort.tcp(4444);
Ports portBindings = new Ports();
portBindings.bind(tcp4444,Ports.Binding.bindPort(4444));
CreateContainerResponse response = dockerClient.
createContainerCmd("selenium/hub")
.withName(name)
.withImage("selenium/hub:"+version)
.withExposedPorts(tcp4444)
.withPortBindings(portBindings)
.withAttachStderr(false)
.withAttachStdin(false)
.withAttachStdout(false)
.exec();`