Docker is “an open source project to pack, ship and run any application as a lightweight container.” It’s a very interesting tool from the Enterprise space, and docker.com lists its usecases as:
- Continuous integration
- Big Data
- Infrastructure Optimization
Docker allows, even on an embedded platform, to leverage Linux containers for isolation between installed packages. Linux containers offer an environment as close to possible as the one you’d get from a virtual machine but without the overhead that comes with running a separate kernel and simulating all the hardware. They rely on kernel security features such as namespaces, mandatory access control and control groups. The isolation provides a way for Docker allow you to install and run packages with conflicting dependencies on the same platform. It also provides a feature set honed in the data centre that allows you to automate and replicate the processes. Once a Docker Image has been built, an installed package and its dependencies can be deployed into a Docker container multiple times on multiple platforms. Through its use of overlay filesystems, Docker is low on resource usage and fast to deploy and boot. Docker is container-based, so unlike with memory-hungry virtual machines, an embedded board with 1GB of DRAM is a candidate to support it.
Docker is an exciting technology, and one reason to install and run it on a CE spec 96Boards like the DB410c or Hikey is that for some of us, it’s the most readily available 64-bit ARM hardware we can access to try it out.
I had my own specific further reasons to use Docker on an embedded board. I was looking at some packages that were painful to install and needed specific distros and distro versions. I only wanted to do the installation and configuration once and I didn’t want to have to handle multiple or ‘unsupported’ distros. Docker allows you to save images that you’ve built and also to automate the build steps for an image. Images can be based on top of existing images and all the steps can be recorded in a
Dockerfile to re-create the image. I was also motivated by what the folks at http://blog.hypriot.com/ had acheived even on ARMv7 and wanted some of that too.
The instructions to re-create my Docker install on 96Boards CE Edition are here.
I aim to be using Docker in the coming months to deploy some applications onto my various CE Edition 96Boards without having to run multiple builds/installations. As a taster, here is a screenshot of 64 Docker containers, each with a separate container instance of Ubuntu, all started up and running on the Dragonboard.
As discussed in the 96Boards (06/16/16) OpenHours session. All sessions are recorded and available in the 96Boards YouTube Channel.
We look forward to seeing you at Open Hours every Thursday, where we discuss current blogs along with other pressing questions amongst a fun crowd of 96Boards users and developers over coffee. I hope to you see you there!
Please remember, if you get stuck, there are resources to help you through any 96Boards issues. Feel free to check out the 96Boards forums, 96Boards wiki, or Freenode IRC channel #96Boards (there are many ways to access IRC, this website is one of them). Dig around the wiki, create a new forum thread, and/or post a question in the chat, myself or one of the 96Boards developers would love to help get your 96Boards up and running!