java - 如何从 java 中运行 docker 容器

标签 java macos docker docker-java

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

docker container run -p 4000:5000 virtuprint:vp

其中 virtuprint:vp 是图像。 我从这里安装了 docker-java api https://github.com/docker-java/docker-java通过 Maven 使用其所有依赖项。 我正在使用 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: Could not initialize class org.newsclub.net.unix.NativeUnixSocket

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

最佳答案

使用了依赖项,降级到版本 3.0.14 并严格遵守本指南: https://www.baeldung.com/docker-java-api

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

关于java - 如何从 java 中运行 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57339358/

相关文章:

bash - 将我的容器入门文件翻译为docker-compose.yml

objective-c - 以二进制形式存储和检索 NSImage 的最佳实践

Java 9 : Exporting packages to unnamed modules fail

java - HikariPool-1 - 驱动程序不支持获取/设置连接的网络超时。 (com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()I)

java - Datanucleus JDO 将字符串映射到 App Engine 中的 MySQL 类型 bigint

xcode - 尝试播放声音时解开可选值时发现 nil

android - 如何在 MacOs Lion 上设置 cocos2dx for android?

docker - 如何将-mem传递给dockerized Play应用程序

docker - 在 Windows Server '19 上 docker 可以与 IIS 并行运行吗?

Java:一个文件中的多个类声明