如何从 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

不知道为什么,但现在可以了。