我想在Java Eclipse项目中运行以下命令:

docker container run -p 4000:5000 virtuprint:vp


其中virtuprint:vp是图像。
我通过maven使用所有依赖项从此处https://github.com/docker-java/docker-java安装了docker-java api。
我正在使用MacOS,我想这是我的麻烦。

我已经阅读了文档和Wiki,并做了一些测试代码以查看其是否正在运行(当然不是)。

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:无法初始化类org.newsclub.net.unix.NativeUnixSocket


我猜是因为他试图在没有的地方找到Unix套接字,但是我既不知道它们在哪里,也不知道如何告诉他在哪里找到它们。

最佳答案

发挥依赖性,降级至版本3.0.14,并严格遵循本指南:
https://www.baeldung.com/docker-java-api

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

09-27 15:07