package space.anyi.docker; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.core.DockerClientConfig; import com.github.dockerjava.core.DockerClientImpl; import com.github.dockerjava.httpclient5.ApacheDockerHttpClient; import com.github.dockerjava.transport.DockerHttpClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.time.Duration; /** * Docker 镜像管理 API 示例 * 提供 DockerClient 的通用封装,供其他示例类复用 */ public class DockerClientFactory { private static final Logger log = LoggerFactory.getLogger(DockerClientFactory.class); /** * 创建一个 DockerClient 实例 * 使用默认配置 + 自定义 HTTP 客户端参数 */ public static DockerClient createDockerClient() { DockerClientConfig dockerClientConfig = DefaultDockerClientConfig.createDefaultConfigBuilder() .build(); log.info("Docker 客户端配置: {}", dockerClientConfig); // 构建 HTTP 传输层实例 DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder() .dockerHost(dockerClientConfig.getDockerHost()) .maxConnections(100) .connectionTimeout(Duration.ofSeconds(30)) .responseTimeout(Duration.ofSeconds(45)) .build(); return DockerClientImpl.getInstance(dockerClientConfig, httpClient); } }