Automating Container Builds.

Flockport supports LXC containers. They offer a more sensible container model with a standard OS environment compared to alternatives.

For those who are wondering what is a container build and why would you need it, you don't. Most container platforms ship with base OS images that you can use to install and run your apps. Flockport also provides an app store of ready to use container apps.

Container builds simply automate the process of installing and configuring an application in a container that you would do manually. It is a set of instructions to install and configure the application. This allows you to make builds repeatable and share them.

Flockport supports two container build models. The first maintains compatability with other build systems like Docker that existing container users may be familiar with. The second offers far more advanced build capabilities including linked & multiple builds, automating deployment across clusters, networks and cluster builds.

Flockport does not use layers to build containers. Layers are interesting but unless you have a specific need addressed by layers they can add more complexity and overhead than benefits.

You base infrastructure must be as simple as possible, save your energy for the complexity that will inevitably come from applications, networking, scalability and security.

You can however choose to run your built container in a layer so your prebuilt app image remains untouched and any data goes to a new layer.

Recipes

The first build model uses recipes. Recipes are basically a set of instructions to install and setup an application in a container. Build systems of this kind are basically bash scripts that get executed in the container. The most important keywords used are FROM, ENV, COPY, RUN, PORT and VOLUME.

FROM describes the base OS image to base the app build on. Flockport provides various base OS images, Ubuntu, Debian, Alpine etc available in the app store you can build from. The ENV keyword defines any environmental variables the build process needs to use. The COPY keyword is used to copy any files needed for the build process to the container. The RUN keyword are the actual commands to install the application. VOLUME is used to attach any data containers if required. The PORT keyword defines any ports to be forwarded when the container is run.

We also use the DBASE keywork to define any databases that need to be linked to the app. You can choose to run the app and the db in the same container (LXC containers behave like light weight VMs and offer a standard multi process OS enviroment) but often it makes sense to decouple them and in that case the build systems does give you the flexibility to defined any required database. Currently only Mysql and Postgresql databases are supported. There a few more keywords that are useful.

Once you have defined the recipe you can simply run the 'flockport build' command to build the container. Recipes are useuful in that they capture a defined set of instructions to install and configure an application or set of applications and can be shared.

Here is a short screencast of the build system in action

Automating Container Builds

Autopilot

The second build system is called Autopilot and offers far more advanced capabilities. It lets you build both single and multiple containers, deploy them, build networks, clusters and more. This autopilot system is currently in testing but the container build functionality is available for testing. This build system uses the yaml format. You can then activate the build with the flockport deploy command.

About Flockport

Flockport is a new container orchestration platform focused on showcasing the ease and flexibility of containers. Flockport currently supports LXC containers.

Flockport's new platform provides an app store, orchestration across servers, advanced networking and distributed storage support, service discovery, load balancing, HA, container builds and deployment automation.


RELATED POSTS