docker-java
docker-java 是 Docker的 Java 版本API Docker
當前的實現基於 Jersey 2.x 因此 classpath 不兼容老版本的 Jersey 1.x !
開發者論壇 docker-java
版本支持
Supports a subset of the Docker Remote API v1.37, Docker Server version since 1.12.6
<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>
當前最新的版本是3.1.0,可以點擊這里查看最新版本。
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.1.0</version>
</dependency>
wiki文檔
For code examples, please look at the Wiki or Test cases
配置Docker環境
系統的可配置項及默認值如下:
DOCKER_HOST
The Docker Host URL, e.g.tcp://localhost:2376
orunix:///var/run/docker.sock
DOCKER_TLS_VERIFY
enable/disable TLS verification (switch betweenhttp
andhttps
protocol)DOCKER_CERT_PATH
Path to the certificates needed for TLS verificationDOCKER_CONFIG
Path for additional docker configuration files (like.dockercfg
)api.version
The API version, e.g.1.23
.registry.url
Your registry's address.registry.username
Your registry username (required to push containers).registry.password
Your registry password.registry.email
Your registry email.
There are three ways to configure, in descending order of precedence:
編程方式配置:
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerHost("tcp://my-docker-host.tld:2376")
.withDockerTlsVerify(true)
.withDockerCertPath("/home/user/.docker/certs")
.withDockerConfig("/home/user/.docker")
.withApiVersion("1.30") // optional
.withRegistryUrl("https://index.docker.io/v1/")
.withRegistryUsername("dockeruser")
.withRegistryPassword("ilovedocker")
.withRegistryEmail("dockeruser@github.com")
.build();
DockerClient docker = DockerClientBuilder.getInstance(config).build();
通過Properties (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
registry.email=dockeruser@github.com
通過System Properties:
java -DDOCKER_HOST=tcp://localhost:2375 -Dregistry.username=dockeruser pkg.Main
通過 Environment
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
測試
我們來簡單測試下:
DockerClient dockerClient = createClient();
// docker info
Info info = dockerClient.infoCmd().exec();
System.out.print(info);
// 搜索鏡像
List<SearchItem> dockerSearch = dockerClient.searchImagesCmd("busybox").exec();
System.out.println("Search returned" + dockerSearch.toString());
// pull
dockerClient.pullImageCmd("busybox:latest").exec(new ResultCallback<PullResponseItem>() {
public void onStart(Closeable closeable) {
}
public void onNext(PullResponseItem object) {
System.out.println(object.getStatus());
}
public void onError(Throwable throwable) {
throwable.printStackTrace();
}
public void onComplete() {
System.out.println("pull finished");
}
public void close() throws IOException {
}
});
// 創建container 並測試
// create
CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
.withCmd("/bin/bash")
.exec();
// start
dockerClient.startContainerCmd(container.getId()).exec();
dockerClient.stopContainerCmd(container.getId()).exec();
dockerClient.removeContainerCmd(container.getId()).exec();
EventsResultCallback callback = new EventsResultCallback() {
@Override
public void onNext(Event event) {
System.out.println("Event: " + event);
super.onNext(event);
}
};
dockerClient.eventsCmd().exec(callback).awaitCompletion().close();
作者:Jadepeng
出處:jqpeng的技術記事本--http://www.cnblogs.com/xiaoqi
您的支持是對博主最大的鼓勵,感謝您的認真閱讀。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。