DockerClientFactory.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package space.anyi.docker;
  2. import com.github.dockerjava.api.DockerClient;
  3. import com.github.dockerjava.api.command.CreateContainerResponse;
  4. import com.github.dockerjava.core.DefaultDockerClientConfig;
  5. import com.github.dockerjava.core.DockerClientConfig;
  6. import com.github.dockerjava.core.DockerClientImpl;
  7. import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
  8. import com.github.dockerjava.transport.DockerHttpClient;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import java.time.Duration;
  12. /**
  13. * Docker 镜像管理 API 示例
  14. * 提供 DockerClient 的通用封装,供其他示例类复用
  15. */
  16. public class DockerClientFactory {
  17. private static final Logger log = LoggerFactory.getLogger(DockerClientFactory.class);
  18. /**
  19. * 创建一个 DockerClient 实例
  20. * 使用默认配置 + 自定义 HTTP 客户端参数
  21. */
  22. public static DockerClient createDockerClient() {
  23. DockerClientConfig dockerClientConfig = DefaultDockerClientConfig.createDefaultConfigBuilder()
  24. .build();
  25. log.info("Docker 客户端配置: {}", dockerClientConfig);
  26. // 构建 HTTP 传输层实例
  27. DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
  28. .dockerHost(dockerClientConfig.getDockerHost())
  29. .maxConnections(100)
  30. .connectionTimeout(Duration.ofSeconds(30))
  31. .responseTimeout(Duration.ofSeconds(45))
  32. .build();
  33. return DockerClientImpl.getInstance(dockerClientConfig, httpClient);
  34. }
  35. }