Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 34 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,56 +85,62 @@ For code examples, please look at the [Wiki](https://github.com/docker-java/dock

There are a couple of configuration items, all of which have sensible defaults:

* `url` The Docker URL, e.g. `https://localhost:2376` or `unix:///var/run/docker.sock`
* `version` The API version, e.g. `1.16`.
* `username` Your registry username (required to push containers).
* `password` Your registry password.
* `email` Your registry email.
* `serverAddress` Your registry's address.
* `dockerCertPath` Path to the docker certs.
* `DOCKER_HOST` The Docker Host URL, e.g. `tcp://localhost:2376` or `unix:///var/run/docker.sock`
* `DOCKER_TLS_VERIFY` enable/disable TLS verification (switch between `http` and `https` protocol)
* `DOCKER_CERT_PATH` Path to the certificates needed for TLS verification
* `DOCKER_CONFIG` Path for additional docker configuration files (like `.dockercfg`)
* `api.version` The API version, e.g. `1.21`.
* `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:

#### Programmatic:
In your application, e.g.

DockerClientConfig config = DockerClientConfig.createDefaultConfigBuilder()
.withVersion("1.16")
.withUri("https://my-docker-host.tld:2376")
.withUsername("dockeruser")
.withPassword("ilovedocker")
.withEmail("[email protected]")
.withServerAddress("https://index.docker.io/v1/")
.withDockerCertPath("/home/user/.docker")
.withDockerHost("tcp://my-docker-host.tld:2376")
.withDockerTlsVerify("1")
.withDockerCertPath("/home/user/.docker/certs")
.withDockerConfig("/home/user/.docker")
.withApiVersion("1.21")
.withRegistryUrl("https://index.docker.io/v1/")
.withRegistryUsername("dockeruser")
.withRegistryPassword("ilovedocker")
.withRegistryEmail("[email protected]")
.build();
DockerClient docker = DockerClientBuilder.getInstance(config).build();

#### Properties

docker.io.url=https://localhost:2376
docker.io.version=1.16
docker.io.username=dockeruser
docker.io.password=ilovedocker
[email protected]
docker.io.serverAddress=https://index.docker.io/v1/
docker.io.dockerCertPath=/home/user/.docker

DOCKER_HOST=tcp://localhost:2376
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/home/user/.docker/certs
DOCKER_CONFIG=/home/user/.docker
api.version=1.21
registry.url=https://index.docker.io/v1/
registry.username=dockeruser
registry.password=ilovedocker
[email protected]

##### System Properties:

java -Ddocker.io.username=dockeruser pkg.Main
java -Dregistry.username=dockeruser pkg.Main

##### System Environment

export DOCKER_URL=http://localhost:2376

Note: we also auto-detect defaults. If you use `DOCKER_HOST` we use that value, and if `DOCKER_CERT_PATH` or `DOCKER_TLS_VERIFY=1` is set, we switch to SSL.
export DOCKER_URL=tcp://localhost:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/home/user/.docker/certs
export DOCKER_CONFIG=/home/user/.docker

##### File System

In `$HOME/.docker.io.properties`
In `$HOME/.docker-java.properties`

##### Class Path

In the class path at `/docker.io.properties`
In the class path at `/docker-java.properties`

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import java.io.Closeable;
import java.io.IOException;

import javax.net.ssl.SSLContext;

import com.github.dockerjava.core.DockerClientConfig;

public interface DockerCmdExecFactory extends Closeable {
Expand Down Expand Up @@ -105,6 +107,8 @@ public interface DockerCmdExecFactory extends Closeable {

public DisconnectFromNetworkCmd.Exec createDisconnectFromNetworkCmdExec();

public DockerCmdExecFactory withSSLContext(SSLContext sslContext);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the idea of adding it here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passing a custom SSLContext to the DockerClientConfig could logically collide with the DOCKER_TLS_VERIFY/dockerTlsVerify() option in the sense of consistency. Additionally I want to free DockerClientConfig from non-default/special configuration options so I moved it to the DockerCmdExecFactory. Makes sense?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems i totally confused with all this classes... Feel free to merge.


@Override
public void close() throws IOException;

Expand Down
Loading