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();
}
}