这里介绍的是Github上的一个通过Java调用Docker的项目:https://github.com/docker-java/docker-java

该项目是基于Jersey 2.x,因此类库将与老版本Jersey 1.x并不兼容。

项目构建

项目构建比较简单,但是需要满足:Jdk 1.7+、Maven 3+。

构建并安装项目

mvn clean install

如果想更快编译,而不用进行集成测试,可以跳过

mvn clean install -DskipITs

项目配置

默认,docker引擎与docker CLI通过UNIX sockets通信,所以docker-java客户端默认也是用UNIX sockets与docker daemon通信。

如果希望docker daemon监听TCP端口(http/https),可以通过配置DOCKER_OPTS

DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"

如果强制docker-java客户端使用TCP,可以如下配置

DOCKER_HOST=tcp://127.0.0.1:2375

为保证TLS通信,可以

DOCKER_HOST=tcp://127.0.0.1:2376
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/Users/marcus/.docker/machine/machines/docker-1.11.2

项目依赖

现阶段支持Docker Remote API v1.23的子集,Docker Server 1.11.x

<dependency>
      <groupId>com.github.docker-java</groupId>
      <artifactId>docker-java</artifactId>
      <!-- use latest version https://github.com/docker-java/docker-java/releases -->
      <version>3.X.Y</version>
</dependency>

配置说明

变量 说明
DOCKER_HOST Docker主机URL,如tcp://localhost:2376,或unix:///var/run/docker.sock
DOCKER_TLS_VERIFY TLS验证
DOCKER_CERT_PATH TLS验证所需的证书
api.version API版本
registry.url 注册地址
registry.username 注册用户
registry.password 注册密码
registry.email 注册邮箱

通过编程配置

DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
    .withDockerHost("tcp://my-docker-host.tld:2376")
    .withDockerTlsVerify(true)
    .withDockerCertPath("/home/user/.docker/certs")
    .withDockerConfig("/home/user/.docker")
    .withApiVersion("1.23")
    .withRegistryUrl("https://index.docker.io/v1/")
    .withRegistryUsername("dockeruser")
    .withRegistryPassword("ilovedocker")
    .withRegistryEmail("[email protected]")
    .build();
DockerClient docker = DockerClientBuilder.getInstance(config).build();

通过项目配置文件docker-java.properties配置

DOCKER_HOST=tcp://localhost:2376
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/home/user/.docker/certs
DOCKER_CONFIG=/home/user/.docker
api.version=1.23
registry.url=https://index.docker.io/v1/
registry.username=dockeruser
registry.password=ilovedocker
[email protected]

通过系统属性配置

java -DDOCKER_HOST=tcp://localhost:2375 -Dregistry.username=dockeruser pkg.Main

通过系统环境变量配置

export DOCKER_HOST=tcp://localhost:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/home/user/.docker/certs
export DOCKER_CONFIG=/home/user/.docker

通过主目录配置文件$HOME/.docker-java.properties配置。

在类路径配置docker-java.properties

results matching ""

    No results matching ""