mirror of https://github.com/apache/jclouds.git
105 lines
3.5 KiB
Markdown
105 lines
3.5 KiB
Markdown
# Docker as a local cloud provider
|
|
|
|
jclouds-docker is a local cloud provider modelled on [docker](http://www.docker.io). Similar to other jclouds supported
|
|
providers, it supports the same portable abstractions offered by jclouds.
|
|
|
|
## Setup
|
|
|
|
Please follow these steps to configure your workstation for jclouds-docker:
|
|
|
|
- install the latest Docker release (please visit https://docs.docker.com/installation/)
|
|
- [enable remote access](https://docs.docker.com/engine/quickstart/#bind-docker-to-another-host-port-or-a-unix-socket) to Docker
|
|
|
|
### Sample configuration for Linux systems using systemd
|
|
|
|
Run following commands on a machine where is the Docker Engine installed.
|
|
It enables remote access (plain TCP - only for loopback address 127.0.0.1)
|
|
on standard port `2375`.
|
|
|
|
```bash
|
|
# switch to root account
|
|
sudo su -
|
|
|
|
# create override for docker start-script
|
|
mkdir /etc/systemd/system/docker.service.d
|
|
cat << EOT > /etc/systemd/system/docker.service.d/allow-tcp.conf
|
|
[Service]
|
|
ExecStart=
|
|
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://
|
|
EOT
|
|
|
|
# reload configuration and restart docker daemon
|
|
systemctl daemon-reload
|
|
systemctl restart docker
|
|
|
|
# close the 'root' session
|
|
exit
|
|
```
|
|
|
|
If the `-H fd://` Docker daemon parameter doesn't work on your Linux (e.g. Fedora),
|
|
then replace it by `-H unix:///var/run/docker.sock`
|
|
|
|
Find more details in [Control and configure Docker with systemd](https://docs.docker.com/engine/admin/systemd/) guide.
|
|
|
|
### Running live tests
|
|
|
|
The `DOCKER_HOST` environment variable has to be configured as it's used as a value for `test.docker.endpoint` system property.
|
|
|
|
```
|
|
export DOCKER_HOST="http://localhost:2375/"
|
|
mvn -Plive integration-test
|
|
```
|
|
|
|
Notice, if you are using [Docker for Mac](https://docs.docker.com/engine/installation/mac/), Docker Remote API may not be available over HTTP.
|
|
In the [Known issue]{https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues) Docker team recommend to use [socat](http://www.dest-unreach.org/socat/)
|
|
to expose `docker.sock` over tcp. You may find useful the following simple commands:
|
|
|
|
```
|
|
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:1234:1234 bobrik/socat TCP-LISTEN:1234,fork UNIX-CONNECT:/var/run/docker.sock
|
|
```
|
|
|
|
and then
|
|
|
|
```
|
|
export DOCKER_HOST=http://localhost:1234
|
|
mvn -Plive integration-test
|
|
```
|
|
|
|
# How it works
|
|
|
|
|
|
--------------- -------------
|
|
| Image(s) | | Node(s) |
|
|
--------------- -------------
|
|
--------- docker remote api ----------------------------------------
|
|
| jclouds | ---------------------------> | DOCKER_HOST |
|
|
--------- ----------------------------------------
|
|
|
|
## Components
|
|
|
|
- jclouds \- acts as a java client to access to docker features
|
|
- DOCKER_HOST \- hosts Docker API, NB: jclouds-docker assumes that the latest Docker is installed
|
|
- Image \- it is a docker image that can be started.
|
|
- Node \- is a docker container
|
|
|
|
## Assumptions
|
|
|
|
- jclouds-docker assumes that the images specified using the template are ssh'able.
|
|
|
|
--------------
|
|
|
|
# Notes:
|
|
- report any issues you find at [jclouds issues](https://issues.apache.org/jira/browse/JCLOUDS)
|
|
- jclouds-docker has been tested on Mac OSX and Linux. However, it has never been tried on Windows.
|
|
|
|
--------------
|
|
|
|
# Troubleshooting
|
|
|
|
As jclouds docker support is quite new, issues may occasionally arise.
|
|
You can try to remove all containers to get things going again:
|
|
|
|
```bash
|
|
docker rm -f `docker ps -aq`
|
|
```
|