| | |
| | | package com.se.docker.service; |
| | | |
| | | import com.github.dockerjava.api.DockerClient; |
| | | import com.github.dockerjava.api.command.CreateContainerResponse; |
| | | import com.github.dockerjava.api.command.InspectContainerResponse; |
| | | import com.github.dockerjava.api.command.*; |
| | | import com.github.dockerjava.api.model.PullResponseItem; |
| | | import com.github.dockerjava.core.DockerClientBuilder; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | } |
| | | |
| | | public void s() throws Exception { |
| | | // 获取默认的 Docker Client |
| | | DockerClient dockerClient = DockerClientBuilder.getInstance().build(); |
| | | |
| | | // 拉取镜像 |
| | | String image = "openjdk:8-alpine"; |
| | | PullImageCmd pullImageCmd = dockerClient.pullImageCmd(image); |
| | | PullImageResultCallback pullImageResultCallback = new PullImageResultCallback() { |
| | | @Override |
| | | public void onNext(PullResponseItem item) { |
| | | System.out.println("下载镜像:" + item.getStatus()); |
| | | super.onNext(item); |
| | | } |
| | | }; |
| | | pullImageCmd |
| | | .exec(pullImageResultCallback) |
| | | .awaitCompletion(); |
| | | System.out.println("下载完成"); |
| | | |
| | | // 创建容器 |
| | | CreateContainerCmd containerCmd = dockerClient.createContainerCmd(image); |
| | | CreateContainerResponse createContainerResponse = containerCmd |
| | | .withCmd("echo", "Hello Docker") |
| | | .exec(); |
| | | System.out.println(createContainerResponse); |
| | | |
| | | // 启动容器 |
| | | String containerId = ""; |
| | | dockerClient.startContainerCmd(containerId).exec(); |
| | | |
| | | // 构建停止容器的命令 |
| | | StopContainerCmd stopContainerCmd = dockerClient.stopContainerCmd(containerId); |
| | | // 执行命令 |
| | | stopContainerCmd.exec(); |
| | | |
| | | // 删除容器 |
| | | dockerClient.removeContainerCmd(containerId).withForce(true).exec(); |
| | | |
| | | // 删除镜像 |
| | | dockerClient.removeImageCmd(image).exec(); |
| | | |
| | | // 重启容器 |
| | | dockerClient.restartContainerCmd(containerId).exec(); |
| | | } |
| | | } |