/xtreemfs-docker

Dockerfiles to run XtreemFS services in containers

Primary LanguageShell

XtreemFS Docker

Dockerfiles to run the XtreemFS services in containers. The images are available on Docker Hub as sorenroug/xtreemfs-common and sorenroug/xtreemfs-client. You can try it out immediately by typing:

git clone https://github.com/sorenroug/xtreemfs-docker.git
cd xtreemfs-docker
docker-compose up -d

The server images will be downloaded and launched.

How to build

The DIR, MRC, and OSD services are using a common image named sorenroug/xtreemfs-common. The containers are built from the XtreemFS Git repository at https://github.com/xtreemfs/xtreemfs.git. You can clone the repositoring by running:

git clone https://github.com/sorenroug/xtreemfs-docker.git
cd xtreemfs-docker

Start with building the sorenroug/xtreemfs-common through executing

docker build -t sorenroug/xtreemfs-common xtreemfs-common/

Service configuration files are expected to be mapped into /xtreemfs_data. The config files have to be named dirconfig.properties, mrcconfig.properties, and osdconfig.properties. Example configuration files for each service are provided in the config-examples directory. A new service can be started for instance by running

docker run -v /xtreemfs_data:/xtreemfs_data -p 32640:32640 -t -d \
    sorenroug/xtreemfs-common:latest osd

while the config is stored in /xtreemfs_data/osdconfig.properties on the host. Network ports have to be mapped adequately while executing docker run. Default ports are 32636 for the MRC, 32638 for the DIR, and 32640 for the OSD. You have to ensure that services register with the correct address at the DIR service, this can be achieved by setting the "hostname" parameter for the MRC and OSD service.

The provided client images contains the XtreemFS FUSE client and can be used to build customized images for own services or run it interactively. The client image is also based on the xtreemfs-common images and can be generated by executing

docker build -t sorenroug/xtreemfs-client xtreemfs-client/

You can run the XtreemFS client in an interactive container by executing

docker run -t -i --privileged --net=host -e LANG=C.UTF-8 sorenroug/xtreemfs-client /bin/bash

Note that FUSE requires to run the container in the privileged mode.

Please consider the XtreemFS user guide at http://xtreemfs.org/userguide.php and the quick start tutorial at http://xtreemfs.org/quickstart.php for a general introduction to XtreemFS.

Using docker-compose

The easiest way to start up all the containers is with docker-compose.

dir:
  image: sorenroug/xtreemfs-common:latest
  net: "host"
  volumes:
    - "./config-examples:/xtreemfs_data"
  environment:
    LANG: C.UTF-8
  ports:
    - "30638:30638"
    - "32638:32638"
  command: dir

mrc:
  image: sorenroug/xtreemfs-common:latest
  net: "host"
  volumes:
    - "./config-examples:/xtreemfs_data"
  environment:
    LANG: C.UTF-8
  ports:
    - "30636:30636"
    - "32636:32636"
  command: mrc

osd:
  image: sorenroug/xtreemfs-common:latest
  net: "host"
  volumes:
    - "./config-examples:/xtreemfs_data"
  environment:
    LANG: C.UTF-8
  ports:
    - "30640:30640"
    - "32640:32640"
  command: osd