Skip to content

Commit 25a27b9

Browse files
committed
Added README
Fixed DockerClient constructor removed TRACE logging
1 parent f63a0e9 commit 25a27b9

File tree

5 files changed

+104
-15
lines changed

5 files changed

+104
-15
lines changed

README.md

Lines changed: 99 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,103 @@
1+
# docker-java
12

2-
docker-java
3-
=========
3+
Java API client for Docker (based on docker-py)
44

5-
An API client for docker written in Java (based on docker-py)
5+
## Build with Maven
66

7+
###### Prerequisites:
78

9+
* Java 1.6+
10+
* Maven 3.0.5
11+
* Docker daemon running
12+
13+
14+
By default maven will run tests during build process. Tests are using localhost instance of Docker, make sure that
15+
you have Docker running, or the tests.
16+
17+
Run docker:
18+
19+
$ sudo docker -d
20+
21+
Make sure that docker is up:
22+
23+
$ docker version
24+
Client version: 0.4.1
25+
Server version: 0.4.1
26+
Go version: go1.1
27+
28+
Run build with tests:
29+
30+
$ mvn clean install
31+
32+
If you don't have Docker running localy, you can skip tests with -DskipTests flag set to true:
33+
34+
$ mvn clean install -DskipTests=true
35+
36+
## Docker Java Client usage:
37+
38+
To use Java Docker client, include dependency into your pom.xml:
39+
40+
<dependency>
41+
<groupId>com.kpelykh</groupId>
42+
<artifactId>docker-java</artifactId>
43+
<version>1.0-SNAPSHOT</version>
44+
</dependency>
45+
46+
*Currently Docker Java client is not available in Maven Central, so you will need to install it to a local
47+
repository, before you can use it in your projects.*
48+
49+
## Example code snippets:
50+
51+
DockerClient dockerClient = new DockerClient("http://localhost:4243");
52+
53+
54+
###### Get Docker info:
55+
56+
Info info = dockerClient.info();
57+
System.out.print(info);
58+
59+
###### Search Docker repository:
60+
61+
List<SearchItem> dockerSearch = dockerClient.search("busybox");
62+
System.out.println("Search returned" + dockerSearch.toString());
63+
64+
###### Create new Docker container, wait for its start and stop it:
65+
66+
ContainerConfig containerConfig =
67+
new ContainerConfig.Builder("busybox")
68+
.cmd(new String[]{"echo"}).build();
69+
ContainerCreateResponse container = dockerClient.createContainer(containerConfig);
70+
dockerClient.startContainer(container.id);
71+
72+
dockerClient.waitContainer(container.id);
73+
74+
dockerClient.stopContainer(container.id);
75+
76+
77+
##### Container Builder:
78+
79+
ContainerConfig containerConfig =
80+
new ContainerConfig.Builder("busybox")
81+
.cmd(new String[] {"true"})
82+
.hostName(hostname)
83+
.user(user)
84+
.stdinOpen(stdinOpen)
85+
.tty(tty)
86+
.memoryLimit(memLimit)
87+
.portSpecs(ports)
88+
.env(environment)
89+
.dns(dns)
90+
.volumes(volumes)
91+
.volumesFrom(volumesFrom)
92+
.build();
93+
ContainerCreateResponse container = dockerClient.createContainer(containerConfig);
94+
95+
96+
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")
97+
98+
99+
## TODO
100+
101+
Currently the following APIs are missing:
102+
103+
export, history, login, push, tag

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44

5-
<groupId>docker-java</groupId>
5+
<groupId>com.kpelykh</groupId>
66
<artifactId>docker-java</artifactId>
77
<version>1.0-SNAPSHOT</version>
88
<packaging>jar</packaging>

src/main/java/com/kpelykh/docker/client/DockerClient.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,7 @@ public class DockerClient
3737
private Client client;
3838
private String restEndpointUrl;
3939

40-
public static DockerClient getInstance(String serverUrl) {
41-
if (instance == null) {
42-
instance = new DockerClient(serverUrl);
43-
}
44-
return instance;
45-
}
46-
47-
private DockerClient(String serverUrl) {
40+
public DockerClient(String serverUrl) {
4841
restEndpointUrl = serverUrl;
4942
ClientConfig clientConfig = new DefaultClientConfig();
5043
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);

src/main/resources/logback.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
</encoder>
77
</appender>
88

9-
<logger name="com.kpelykh.docker.client" level="TRACE"/>
10-
<logger name="com.kpelykh.docker.client.test" level="DEBUG"/>
9+
<!--<logger name="com.kpelykh.docker.client" level="TRACE"/>
10+
<logger name="com.kpelykh.docker.client.test" level="DEBUG"/>-->
1111

1212
<root level="info">
1313
<appender-ref ref="STDOUT" />

src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class DockerClientTest extends Assert
4444
public void beforeTest() throws DockerClientException {
4545
LOG.info("======================= BEFORETEST =======================");
4646
LOG.info("Connecting to Docker server at http://localhost:4243");
47-
dockerClient = DockerClient.getInstance("http://localhost:4243");
47+
dockerClient = new DockerClient("http://localhost:4243");
4848
LOG.info("Creating image 'busybox'");
4949

5050
InputStream in = null;

0 commit comments

Comments
 (0)