Containers and Related Software¶
In Getting Started: As a User, we created a container in addition to a virtual machine based on the Full Virtual Micromagnetics environment. This page talks about containers and how the provider-manager-provisioner model applies to container creation. We recommend reading Virtual Machines and Related Software, if you have not already.
Containers and Images¶
A container is a virtualisation mechanism similar to a virtual machine, in that it allows users to run software in a controlled environment with a cap on available computing resources (like memory). Where a virtual machine contains the entire software stack above and including the operating system, a container uses the operating system and kernel of the host machine to produce its environment. Containers are created from images (container templates, analogous to box files) to run a single process, and are usually destroyed once that process has been completed.
Images can be distributed to other users so that they can run Virtual Micromagnetics environments from a container.
Software Related to Containers¶
As with virtual machines, containers require supporting software to function. The provider-manager-provisioner model outlined for virtual machines in Virtual Machines and Related Software also applies to containers as follows:
- Provisioner: Ansible is also used to provision containers. In Virtual Micromagnetics, scripts to provision containers and virtual machines with software are very similar, encouraging code reuse.
- Manager: Vagrant is used to manage containers in this project in a similar way to how virtual machines are managed. An exception is that Vagrant can only be used to host box files, meaning another hosting method is needed for images.
- Provider: Docker is used in Virtual Micromagnetics to create containers for simulation (as the user) and for provisioning (as the poweruser). Docker also supports online hosting of images; this is used in Virtual Micromagnetics as a distribution method.
Containers are another virtualisation mechanism, like virtual machines. Containers virtualise fewer elements of the software stack so they are smaller, but consequently impose more requirements on the host machine. Like virtual machines, containers can be provisioned, managed, and distributed.
You are now ready to get started as a poweruser, which explains how to create custom environments containing software you choose, as well as instructions for adding new software or configuring your own virtual environment.