Traditional NAS solutions to application support come with three primary limitations:
- They cannot support applications written for other operating systems.
- They can be cumbersome to install and even more difficult to remove.
- They don’t always “play nice” with other applications in the same OS.
Thanks to Docker and Virtual Machines, unRAID can address these problems in a number of key ways:
- We support the use of any Linux or Windows-based x86 applications.
- We place apps in isolated run-time environments to prevent conflicts.
- We make it easy to control applications through our web interface.
Applications, just like with any other form of technology, help you reap more value out of your investment in hardware. With unRAID 6, our goal for applications was to simply enable users to run more of them with less hassle.
Docker uses control groups, namespace isolation, and image layering to create isolated run-time environments for Linux-based applications in the form of Containers. Docker can control the resources (e.g. CPU, memory, disk, and network) that Containers are allocated and isolate them from conflicting with other applications on the same system. This provides all the benefits of traditional virtual machines, but with none of the overhead associated with emulating hardware, making containers ridiculously efficient and in some studies, barely distinguishable from bare-metal equivalents.
One of biggest advantages Docker provides is in its application repository: the Docker Hub. Many traditional Linux operating systems come with a component in their framework known as a package manager. The job of the package manager is to let folks easily install applications written for a particular operating system from catalogs that are known as repositories. While package managers do their job fairly well, they come with all the limitations mentioned at the beginning of this page. While all virtualization technologies provide powerful ways to control resources allocated to an operating system, they still rely on the user to downloaded and install the apps they wish to use.
Using the Docker engine, pre-installed applications can be downloaded automatically from the hub, reducing the amount of time and steps required to begin making use of them. The hub contains over 14,000 Dockerized apps, so finding what you’re looking for shouldn’t be a problem. In addition, thanks to some of our loyal community members, users can quickly add many of the most popular containers through the use of templates in unRAID 6. These forum members have taken it upon themselves to build and maintain these templates and the list of available templates continues to grow.
From a storage perspective, the Docker leverages copy-on-write capabilities from the BTRFS filesystem combined with images provided through the hub. The images are essentially tar files with a hierarchy so that other images which depend upon a common layer don’t need to replicate storage for the layer they share. The shared layers are put in a read-only state, while changes made to them are reflected only in the instance for the application that changed it. In simpler terms, this means that applications can be efficient in their use of both system performance and storage capacity.
While Docker is our preferred method for Linux-based applications, VMs add support for other operating systems as well as more direct control by users over the run-time environment. IT professionals and developers alike can install their own VMs using the KVM hypervisor. More information on Virtual Machines can be found here.