如何从 java 中 运行 一个 docker 容器
How to run a docker container from within java
我想从 Java Eclipse 项目中 运行 以下命令:
docker container run -p 4000:5000 virtuprint:vp
其中 virtuprint:vp
是一张图片。
我从这里 https://github.com/docker-java/docker-java 安装了 docker-java api 通过 Maven 使用它的所有依赖项。
我正在使用 MacOS,我想这是我的麻烦。
我已经阅读了文档和维基,只是做了一些测试代码以查看它是否 运行ning(当然不是。)
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
List<Container> containers = dockerClient.listContainersCmd().exec();
for(Container c: containers) {
System.out.println(c.getId());
}
所以我只想在短期内打印容器 ID。从长远来看,我想在我的 java 应用程序中 运行 按需使用多个 docker 容器。
但是如果我 运行 我得到的代码:
java.lang.NoClassDefFoundError: Could not initialize class org.newsclub.net.unix.NativeUnixSocket
我猜这是因为他试图在没有它们的地方找到 unix 套接字,但我既不知道它们在哪里,也不知道如何告诉他在哪里可以找到它们。
尝试使用依赖项,降级到版本 3.0.14 并严格遵守本指南:
https://www.baeldung.com/docker-java-api
不知道为什么,但现在可以了。
我想从 Java Eclipse 项目中 运行 以下命令:
docker container run -p 4000:5000 virtuprint:vp
其中 virtuprint:vp
是一张图片。
我从这里 https://github.com/docker-java/docker-java 安装了 docker-java api 通过 Maven 使用它的所有依赖项。
我正在使用 MacOS,我想这是我的麻烦。
我已经阅读了文档和维基,只是做了一些测试代码以查看它是否 运行ning(当然不是。)
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
List<Container> containers = dockerClient.listContainersCmd().exec();
for(Container c: containers) {
System.out.println(c.getId());
}
所以我只想在短期内打印容器 ID。从长远来看,我想在我的 java 应用程序中 运行 按需使用多个 docker 容器。 但是如果我 运行 我得到的代码:
java.lang.NoClassDefFoundError: Could not initialize class org.newsclub.net.unix.NativeUnixSocket
我猜这是因为他试图在没有它们的地方找到 unix 套接字,但我既不知道它们在哪里,也不知道如何告诉他在哪里可以找到它们。
尝试使用依赖项,降级到版本 3.0.14 并严格遵守本指南: https://www.baeldung.com/docker-java-api
不知道为什么,但现在可以了。