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