diff --git a/README.md b/README.md
index 24cfc9ad..a51128f7 100644
--- a/README.md
+++ b/README.md
@@ -1,145 +1,3 @@
-# docker-java
+This project has moved to https://github.com/docker-java/docker-java
+--------------------------------------------------------------------
-Java API client for [Docker](http://docs.docker.io/ "Docker")
-
-Supports a subset of the Docker Client API v1.11, Docker Server version 0.11
-
-Developer forum for [docker-java](https://groups.google.com/forum/?hl=de#!forum/docker-java-dev "docker-java")
-
-## Build with Maven
-
-###### Prerequisites:
-
-* Java 1.6+
-* Maven 3.0.5
-* Docker daemon running
-
-Maven may run tests during build process but tests are disabled by default. The tests are using a localhost instance of Docker, make sure that you have Docker running for tests to work. To run the tests you have to provide your https://www.docker.io/account/login/ information:
-
- $ mvn clean install -DskipTests=false -Ddocker.io.username=... -Ddocker.io.password=... -Ddocker.io.email=...
-
-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:
-
-
- com.kpelykh
- docker-java
- 0.8.1
-
-
-
-## 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 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")
-
-## Configuration
-
-There are a couple of configuration items, all of which have sensible defaults:
-
-* `url` The Docker URL, e.g. `http://localhost:4243`.
-* `version` The API version, e.g. `1.11`.
-* `username` Your repository username (required to push containers).
-* `password` Your repository password.
-* `email` Your repository email.
-
-There are three ways to configure, in descending order of precedence:
-
-##### Programatic:
-In your application, e.g.
-
- DockerClient docker = new DockerClient("http://localhost:4243");
- docker.setCredentials("dockeruser", "ilovedocker", "dockeruser@github.com");`
-
-##### System Properties:
-E.g.
-
- java -Ddocker.io.username=kpelykh pkg.Main
-
-##### File System
-In `$HOME/.docker.io.properties`, e.g.:
-
- docker.io.username=dockeruser
-
-##### Class Path
-In the class path at `/docker.io.properties`, e.g.:
-
- docker.io.url=http://localhost:4243
- docker.io.version=1.11
diff --git a/src/main/java/com/kpelykh/docker/client/DockerClient.java b/src/main/java/com/kpelykh/docker/client/DockerClient.java
index 7bba645f..101d7209 100644
--- a/src/main/java/com/kpelykh/docker/client/DockerClient.java
+++ b/src/main/java/com/kpelykh/docker/client/DockerClient.java
@@ -190,6 +190,19 @@ public Version version() throws DockerException {
}
}
}
+
+
+ public int ping() throws DockerException {
+ WebResource webResource = client.resource(restEndpointUrl + "/_ping");
+
+ try {
+ LOGGER.trace("GET: {}", webResource);
+ ClientResponse resp = webResource.get(ClientResponse.class);
+ return resp.getStatus();
+ } catch (UniformInterfaceException exception) {
+ throw new DockerException(exception);
+ }
+ }
/**
@@ -280,6 +293,36 @@ private String name(String name) {
return name.contains("/") ? name : authConfig.getUsername();
}
+ /**
+ * Tag an image into a repository
+ *
+ * @param image the local image to tag (either a name or an id)
+ * @param repository the repository to tag in
+ * @param tag any tag for this image
+ * @param force (not documented)
+ * @return the HTTP status code (201 for success)
+ */
+ public int tag(String image, String repository, String tag, boolean force) throws DockerException {
+ Preconditions.checkNotNull(image, "image was not specified");
+ Preconditions.checkNotNull(repository, "repository was not specified");
+ Preconditions.checkNotNull(tag, " tag was not provided");
+
+ MultivaluedMap params = new MultivaluedMapImpl();
+ params.add("repo", repository);
+ params.add("tag", tag);
+ params.add("force", String.valueOf(force));
+
+ WebResource webResource = client.resource(restEndpointUrl + "/images/" + image + "/tag").queryParams(params);
+
+ try {
+ LOGGER.trace("POST: {}", webResource);
+ ClientResponse resp = webResource.post(ClientResponse.class);
+ return resp.getStatus();
+ } catch (UniformInterfaceException exception) {
+ throw new DockerException(exception);
+ }
+ }
+
/**
* Create an image by importing the given stream of a tar file.
*
diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java
index ccf09ea9..f6af3823 100644
--- a/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java
+++ b/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java
@@ -25,10 +25,12 @@
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.util.List;
+import java.util.Random;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.RandomUtils;
import org.hamcrest.Matcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -569,6 +571,16 @@ public void testRemoveImage() throws DockerException, InterruptedException {
assertThat(containers, matcher);
}
+ @Test
+ public void testTagImage() throws DockerException, InterruptedException {
+ String tag = String.valueOf(RandomUtils.nextInt(Integer.MAX_VALUE));
+
+ Integer result = dockerClient.tag("busybox:latest", "docker-java/busybox", tag, false);
+ assertThat(result, equalTo(Integer.valueOf(201)));
+
+ dockerClient.removeImage("docker-java/busybox:" + tag);
+ }
+
/*
*
* ################ ## MISC TESTS ## ################