== Preliminaries

*Arquillian Cube* relies on https://github.com/docker-java/docker-java[docker-java] API.

To use *Arquillian Cube* you need a _Docker_ daemon running on a computer (it can be local or not), but probably it will be at local.

By default the _Docker_ server uses UNIX sockets for communicating with the _Docker_ client. *Arquillian Cube* will attempt to detect the operating system it is running on and either set _docker-java_ to use UNIX socket on _Linux_ or to <<Boot2Docker>> on _Windows_/_Mac_ as the default URI.

Further in case of Linux, if you want to use TCP/IP to connect to the Docker server, you'll need to make sure that your
_Docker_ server is listening on TCP port. To allow _Docker_ server to use TCP set the _Docker daemon options_, the exact
process for which varies by the way you launch the Docker daemon and/or the underlying OS:

* systemd (Ubuntu, Debian, RHEL 7, CentOS 7, Fedora, Archlinux) — edit docker.service and change the ExecStart value

+
To change the value of an option, ExecStart in this case, do the following:

 $ sudo systemctl edit docker

+
This will create the necessary directory structure under `/etc/systemd/system/docker.service.d` and open an editor
(using the default editor configured for the user) to the override file. Add the section below into the editor:

 [Service]
 ExecStart=
 ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock

+
It was necessary to clear out ExecStart using `ExecStart=` before setting it to the override value. This is only
required for some options and most options in the configuration file would not need to be cleared like this. Using
systemctl edit also ensures that the override settings are loaded.

* upstart (Ubuntu 14.04 and older versions) — set DOCKER_OPTS in `/etc/default/docker`

 DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"

* In case of Fedora distribution docker installed on Fedora - set OPTIONS in `/etc/sysconfig/docker`

 OPTIONS='-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock'

After restarting the _Docker_ daemon you need to make sure that _Docker_ is up and listening on TCP.

[source, terminal]
----
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
----

[source, terminal]
----
$ docker -H tcp://127.0.0.1:2375 version

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
Server version: 1.2.0
Git commit (server): fa7b24f
Go version (server): go1.3.1
----

If you cannot see the client and server versions then it means that something is wrong with the _Docker_ installation.
