如何通过Java程序执行docker命令

我不需要调用Docker远程API,而是需要开发一个与Docker Linux Client(不是Docker守护进程)对话的程序。 这是我的代码

try { String[] command = {"docker", "run", "-it", "tomcat:9", "bash"}; ProcessBuilder pb = new ProcessBuilder(command); pb.inheritIO(); Process proc = pb.start(); InputStream is = proc.getInputStream(); OutputStream os = proc.getOutputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os)); writer.write("pwd"); writer.flush(); String line = ""; while ((line = reader.readLine()) != null) { System.out.print(line + "\n"); } proc.waitFor(); } catch (Exception e) { e.printStackTrace(); }

我总是得到错误。 如果我使用“-it”,它会说“不能在非ttyinput上启用tty模式”,如果我使用“-i”,我将得到一个Stream Closed Exception。

有什么办法可以解决这个问题吗?

为了克服你面临的错误,你应该使用“-i”而不是“-it”。 -t arg告诉docker分配一个伪tty。

public void startContainer(String containerId) throws Exception { final DockerClient docker = DefaultDockerClient.builder() .uri(URI.create("https://192.168.64.3:2376")) .dockerCertificates(new DockerCertificates(Paths.get("/Users/d.romashov/.docker/machine/machines/dinghy"))) .build(); docker.startContainer(containerId); }

如何通过Java程序执行docker命令我不需要调用Docker远程API,而是需要开发一个与Docker Linux Client(不是Docker守护进程)对话的程序。 这是我的代码try { String[] command = {"docker", "run", "-it", "tomcat:9", "bash"}; ProcessBuilder pb = new ProcessBuild... 包括以下服务: 网络-角基于UI,是的NodeJS用作Web服务器 api-基于Spring的应用程序,提供REST api,SpringBoot和绑定到可执行jar的嵌入式Jetty。 db -MongoDB。 基于MongoDB的 Docker 映像,允许配置数据库,用户名和密码以运行 容器 。 安装 docker -engine和 docker -compose( ) 运行所有服务 $ docker -compose up -d 仅运行api和db $ docker -compose up api -d Docker 是一种持续性工具,使用 Docker 我们可以将应用程序部署为 使用 docker 映像的 容器 容器 包含应用程序代码以及软件, 配置文件,以运行我们的应用程序所需的任何文件。 使用 Docker file创建 Docker 映像 docker build -t docker handson/spring-boot-mongo . 使用 Docker Compose部署应用程序 docker -compose up -d 列出 Docker 容器 docker ps -a 成功完成构建后,执行以下 命令 以创建 Java 和Mysql服务器 容器 并执行初始库加载: docker -compose up --build 从现在开始,您将能够通过端点访问服务。 消耗应用程序服务所需的端点: 创建合作者 POST- 下面是一个示例,其中包含执行JSON调用的字段: {“ name”:“”,“ email”:“”,“ phone”:“”,“ cpf”:“”,“ sector”:{“ id”:“”}} 列出合作者
带有Spring Boot的Hola Docker 更新:现在代码使用Spring Boot 2和 Java 10。 该项目向您展示了如何使用单个 Docker file或将其与 Docker file docker -compose结合使用来对Spring Boot应用程序进行 Docker file docker -compose 。 上的构建代码和了解不同替代方法的指南。 使用 Docker 运行应用程序 确保首先运行以下 命令 来生成.jar文件: mvn clean package 然后,您只需要执行: docker -compose up 请注意,此存储库中有两个 Docker file。 Docker file-build不仅可以在 容器 中运行应用程序,还可以使用Maven进行构建。 请查看以获取更多详细信息。
本人在做实验过程中,需要通过 Java 程序部署 docker 容器 。故尝试搜集资料,实现在 Java 端可以操作部署 docker 容器 。过程中遇到一些bug和坑,在此总结,供有需要的童鞋使用。主体配置以Ubuntu16为例。后面会附加给出mac的配置说明。 docker 安装 # 安装 docker curl -sSL https://get.daocloud.io/ docker | sh # 查看是...
1.2、使用交互模式运行: docker run -it ubuntu /bin/bash 1.2.1、 指定 容器 的运行名称: docker run -it --name yaya ubuntu /bin/bash 1.3、查看当前运行的 容器 docker ps 1.3.1、查看 docker 正在运行和从前运行过的 容器 : docker ps -a 1.3.2、查询 docker 最近创建的 容器 : docker ps -.
mysql docker run -p 3306:3306 --name mysql -v /var/local/mysql/conf:/etc/mysql -v /var/local/mysql/data:/var/lib/mysql -v /var/local/mysql/conf:/etc/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=root -d mysql redis docker run -d --name
Java 中获取 Docker 容器 的占用状态,需要使用 Docker Remote API。你可以使用第三方 Java 库,例如 Docker Java 库,来简化操作。该库提供了与 Docker API 的交互,方便获取 容器 的状态信息。你可以通过以下方式使用 Docker Java 库: 1. 安装 Docker Java 库:在你的项目中添加以下依赖: <dependency> <groupId>com.github. docker - java </groupId> <artifactId> docker - java </artifactId> <version>3.0.13</version> </dependency> 2. 连接到 Docker 守护进程: Docker Client docker Client = Docker ClientBuilder.getInstance().build(); 3. 获取 容器 列表: List<Container> containers = docker Client.listContainersCmd().exec(); 4. 获取 容器 的状态信息: for (Container container : containers) { InspectContainerResponse inspectContainerResponse = docker Client.inspectContainerCmd(container.getId()).exec(); String state = inspectContainerResponse.getState().getStatus(); System.out.println("Container ID: " + container.getId() + " State: " + state); 这样就可以在 Java 代码中获取 Docker 容器 的占用状态了。