mirror of https://github.com/apache/cloudstack.git
115 lines
3.4 KiB
Markdown
115 lines
3.4 KiB
Markdown
# docker-java
|
|
|
|
Java API client for [Docker](http://docs.docker.io/ "Docker")
|
|
|
|
Supports a subset of the Docker Client API v1.8, Docker Server version 0.8.1
|
|
|
|
## Build with Maven
|
|
|
|
###### Prerequisites:
|
|
|
|
* Java 1.6+
|
|
* Maven 3.0.5
|
|
* Docker daemon running
|
|
|
|
Maven will run tests during build process. Tests are using localhost instance of Docker, make sure that
|
|
you have Docker running for tests to work or just turn off tests.
|
|
|
|
If you don't have Docker running locally, you can skip tests with -DskipTests flag set to true:
|
|
|
|
$ mvn clean install -DskipTests=true
|
|
|
|
|
|
By default Docker server is using UNIX sockets for communication with the Docker client, however docker-java
|
|
client uses TCP/IP to connect to the Docker server, so you will need to make sure that your Docker server is
|
|
listening on TCP port. To allow Docker server to use TCP add the following line to /etc/default/docker
|
|
|
|
DOCKER_OPTS="-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock"
|
|
|
|
More details setting up docket server can be found in official documentation: http://docs.docker.io/en/latest/use/basics/
|
|
|
|
Now make sure that docker is up:
|
|
|
|
$ docker -H tcp://127.0.0.1:4243 version
|
|
|
|
Client version: 0.8.1
|
|
Go version (client): go1.2
|
|
Git commit (client): a1598d1
|
|
Server version: 0.8.1
|
|
Git commit (server): a1598d1
|
|
Go version (server): go1.2
|
|
Last stable version: 0.8.1
|
|
|
|
Run build with tests:
|
|
|
|
$ mvn clean install
|
|
|
|
## Docker-Java maven dependency:
|
|
|
|
<dependency>
|
|
<groupId>com.kpelykh</groupId>
|
|
<artifactId>docker-java</artifactId>
|
|
<version>0.8.1</version>
|
|
</dependency>
|
|
|
|
|
|
## Example code snippets:
|
|
|
|
DockerClient dockerClient = new DockerClient("http://localhost:4243");
|
|
|
|
###### Get Docker info:
|
|
|
|
Info info = dockerClient.info();
|
|
System.out.print(info);
|
|
|
|
###### Search Docker repository:
|
|
|
|
List<SearchItem> dockerSearch = dockerClient.search("busybox");
|
|
System.out.println("Search returned" + dockerSearch.toString());
|
|
|
|
###### Create new Docker container, wait for its start and stop it:
|
|
|
|
ContainerConfig containerConfig = new ContainerConfig();
|
|
containerConfig.setImage("busybox");
|
|
containerConfig.setCmd(new String[] {"touch", "/test"});
|
|
ContainerCreateResponse container = dockerClient.createContainer(containerConfig);
|
|
|
|
dockerClient.startContainer(container.id);
|
|
|
|
dockerClient.waitContainer(container.id);
|
|
|
|
dockerClient.stopContainer(container.id);
|
|
|
|
|
|
##### Support for UNIX sockets:
|
|
|
|
Support for UNIX socket should appear in docker-java pretty soon. I'm working on its integration.
|
|
|
|
##### Docker Builder:
|
|
|
|
To use Docker Builder, as described on page http://docs.docker.io/en/latest/use/builder/,
|
|
user dockerClient.build(baseDir), where baseDir is a path to folder containing Dockerfile.
|
|
|
|
|
|
File baseDir = new File("~/kpelykh/docker/netcat");
|
|
|
|
ClientResponse response = dockerClient.build(baseDir);
|
|
|
|
StringWriter logwriter = new StringWriter();
|
|
|
|
try {
|
|
LineIterator itr = IOUtils.lineIterator(response.getEntityInputStream(), "UTF-8");
|
|
while (itr.hasNext()) {
|
|
String line = itr.next();
|
|
logwriter.write(line);
|
|
LOG.info(line);
|
|
}
|
|
} finally {
|
|
IOUtils.closeQuietly(response.getEntityInputStream());
|
|
}
|
|
|
|
|
|
|
|
For additional examples, please look at [DockerClientTest.java](https://github.com/kpelykh/docker-java/blob/master/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java "DockerClientTest.java")
|
|
|