public class DockerClientService {
private static final Logger LOGGER = LoggerFactory.getLogger(DockerClientService.class);/*** 连接docker服务器** @return*/public DockerClient connectDocker(String serverUrl) {DockerClient dockerClient = DockerClientBuilder.getInstance(serverUrl).build();Info info = dockerClient.infoCmd().exec();LOGGER.debug("================= Docker环境信息:================= \n{}", info);return dockerClient;}/*** 创建容器** @param client* @param containerName* @param imageName* @param exposedTcpPort* @param bindTcpPort* @return*/public CreateContainerResponse createContainer(DockerClient client, String containerName, String imageName,int exposedTcpPort, int bindTcpPort) {ExposedPort exposedPort = ExposedPort.tcp(exposedTcpPort);Ports portBindings = new Ports();portBindings.bind(exposedPort, Ports.Binding.bindPort(bindTcpPort));CreateContainerResponse container = client.createContainerCmd(imageName).withName(containerName).withHostConfig(HostConfig.newHostConfig().withPortBindings(portBindings)).withExposedPorts(exposedPort).exec();return container;}/*** 创建容器** @param client* @param containerName* @param imageName* @return*/public CreateContainerResponse createContainer(DockerClient client, String containerName, String imageName) {CreateContainerResponse container = client.createContainerCmd(imageName).withName(containerName).exec();return container;}/*** 启动容器** @param client* @param containerId*/public void startContainer(DockerClient client, String containerId) {client.startContainerCmd(containerId).exec();}/*** 停止容器** @param client* @param containerId*/public void stopContainer(DockerClient client, String containerId) {client.stopContainerCmd(containerId).exec();}/*** 重启容器** @param client* @param containerId*/public void restartContainer(DockerClient client, String containerId) {client.restartContainerCmd(containerId).exec();}/*** 删除容器** @param client* @param containerId*/public void removeContainer(DockerClient client, String containerId) {client.removeContainerCmd(containerId).exec();}
}
