5 Ready-made OSS Docker Images

29 Oct 2015

Traditionally, Open Source Software (OSS) software has had a reputation for being hard to install and brittle to maintain.<!--more-->

And rightly so. That ./configure && make && make install command very rarely went as a smoothly as you’d like it to. Nevermind the hours you’d pour over "the documentation" to figure out how to get a working configuration for your system.

Many medium to large OSS projects recognise this problem and work hard to get into Linux distributions like Ubuntu or RedHat. (Alternatively providing their own packages to be downloaded from the project specific package repository.) Once that’s done, installation is as easy as apt-get or an rpm run.

But there is an alternative to this that works well for people who prefer to work with containers over manual system administration. Increasingly, OSS projects are providing ready-to-use images that make it easy to get up-and-running. Just take a look at the Docker Hub and see for yourself how many images are available for installation.

This post highlights five useful OSS Docker images, look at their default configuration, and suggest ways to modify them to make them work for you.

The Containers

Ghost

Ghost is a legacy application used for blog-style content management, and is entirely open-source.

Some current issues affecting Ghost are its handling of pagination, Unicode issues, and functional test failures on some blogs. When setting Ghost up to link with an RSS feed, users should validate that this is functional.

Because Ghost is a legacy app, users may have some issues adapting it for use on AWS. Downloading the Ghost Docker image from the Docker Hub is one way to save yourself a bit of time and effort, as some of the work has been done for you.

Artifactory

Artifactory is an OSS repository manager used to manage and maintain projects for developers of all skillsets. Artifactory offers consistent, secure access to your repositories, allowing you to control who accesses them and when. Artifactory allows developers to search for any OSS registry image (artifact) and run it.

Artifactory’s Docker image utilizes Tomcat to help customize runtime options, allowing for users to control heap size seamlessly. It is a binary repository management tool, allowing for developers to manage their in-house Docker images both on-site and remotely. You can also manage Vagrant, Git, AQL, S3, and a number of other repositories with Artifactory.

Artifactory includes Black Duck integration, allowing for projects to obtain the correct licensing and security information for the particular open source software they are using. It also supports PyPI and pip so that you can deploy your application directly through running its setup.py script.

Artifactory lets your team use their LDAP groups to better manage group permissions. Artifactory can use static, dynamic, or hierarchical mapping, with visual status updates to let you know what your users are accessing at what time.

ElasticSearch

ElasticSearch is a multitenant-capable full-text search engine with schema-free JSON documents and sharding capabilities. It can be used to search documents of all kinds. You can also use ElasticSearch as a NoSQL solution, and it supports real-time GET requests.

The ElasticSearch Docker image comes with default configuration files, but allows for users to mount their own custom settings. The same is also true for users setting their own flags. ElasticSearch on Docker supports container linking, meaning that you can link one container to another via the standard linking process.

ElasticSearch has a current bug where it will split words with underscores between them, so if your search splits words with these or another form of punctuation (e.g. commas or periods) be careful.

ElasticSearch is built on Apache Lucene and is scalable to hundreds of individual servers. When installing ElasticSearch, you may also want to look at Marvel and Sense. Marvel is a dashboard and monitoring tool that allows you view and edit JSON code snippets in Chrome via the Sense plugin.

To install Marvel as a plugin, open a terminal, navigate to your ElasticSearch directory and enter the following command:

./bin/plugin -i elasticsearch/marvel/latest./bin/plugin -i elasticsearch/marvel/latest

To keep Marvel from monitoring your local cluster, enter the following:

echo 'marvel.agent.enabled: false' >> ./config/elasticsearch.yml

Using ElasticSearch varies if you are using Java or a restful API. Users that are running Java should note that ElasticSearch comes with two different client.

For those running a Restful API, they can communicate with their ElasticSearch cluster on port 9200 or via the curl command:

curl -X<VERB> '<PROTOCOL>://<HOST>/<PATH>?<QUERY_STRING>' -d '<BODY>'

Odoo

Odoo is a suite of OSS business applications written in Python. This particular suite covers e-commerce, manufacturing, accounting, website management, and inventory. Odoo is the most-installed business software in the world, with over 2,000,000 installations to date.

Odoo requires running a PostgreSQL server, which you can install with Docker. You can install a custom configuration of Odoo if you have one already created. Starting a PostgreSQL server requires the following to be run before running the Odoo Docker image:

docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres

Odoo also supports the addition of custom add-ons and running multiple instances. To write your own custom Odoo configuration for Docker, check out the official guide.

If you have a custom add-on to run in your Odoo container, open a terminal and enter the following command:

docker run -v /path/to/addons:/mnt/extra-addons -p 127.0.0.1:8069:8069 --name odoo --link db:db -t odoo

Note: the Odoo package from Ubuntu 14.04 cannot generate PDF reports as of 2015-07-24. If you are running Ubuntu 14.04 and encounter this problem, there is a workaround.

RabbitMQ

RabbitMQ allows users to send and receive messages in all major programming languages. It utilizes Erlang's Open Telecom Platform (OTP) to handle clustering and failover.

When running the RabbitMQ container, specification of host names is crucial to being able to access your data. Users can also set cookies and run separate instances to connect to the service if needed.

Be sure to run the official Docker image of RabbitMQ, as users running Docker 1.5.0 may run into issues with the container failing to start when running an outdated version (prior to 3.5.0) of RabbitMQ.

Users may also experience issues where user states are not persistent when creating new RabbitMQ containers. You can work around this issue by setting the node name variable before setting up users. And be sure to set your user permissions to persist while running RabbitMQ in Docker, or permissions will reset upon every restart of your container.

Conclusion

These applications are examples of the breadth of OSS projects that come in ready-made images for use with Docker.

Providing a Docker image is the new way to get your OSS project into the hands of people that need it. Rather than having to rely on a package manager to create a version of your project for each OS, containers allow you to package your application and its dependencies together, ready to deploy on a local machine, cloud, or private infrastructure.

With developer tools ranging from blogging platforms to full-scale business solutions, chances are there’s a ready-made Docker image available to help. Check out the the Docker registry to see what you can find!

Posted in Series: Ready Made, Docker Hub, Docker

triangle square circle

Did you enjoy this post?