这里介绍的是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