Docker: What it is, and Why it Matters for Software Training
You probably never thought you’d hear me compare software with a ship’s cargo, but that’s just what I’m going to do.
Why? They both come in many different shapes and sizes, but they both have been standardized so they can be quickly and easily shipped (or reproduced, in the case of software) anywhere in the world to any user.
Let me explain.
When transporting goods across the ocean, shipping companies used to have to pick a ship that fit with the shape and size of the cargo. That was until the shipping industry invented universal shipping containers that could carry any size of cargo. This meant that shipping companies were no longer restricted to only using certain types and sizes of ships.
Companies used to face the same problem with software. Different programs and apps have different requirements –– Java works differently from Python which works differently from C++ and so on –– but they all needed to be reproduced from one computing environment to another, and work seamlessly, regardless of the the technology infrastructure. This was a challenge.
Docker has made similar strides in the software industry as these shipping containers did in the maritime sector with the creation of its standardized units of software called containers.
Docker containers and images – what’s the difference?
We’ve probably all been in the situation where we would download a program that works smoothly on our co-worker’s computer, but for whatever reason, it won’t run on ours. Maybe your coworker has software dependencies or extensions you don’t have on your computer, and so the program won’t work.
Docker eradicates the situation of “but it works on my computer” by creating a universal language that enables you to package up all of your software’s code and dependencies into one container (much like the universal shipping container). This could be a web app, or a desktop program, or a developer environment.
Once you have packaged up your software, you can then create an image of it, which is a lightweight version of the software that has everything you need to run this software yourself.
Think of the relationship between an image and container as like when you make a photocopy. The image is the original version of the document (or software environment you have packaged up), and the container is the photocopy that you have made.
Just as you can draw a mustache on the photocopy, you can modify the container. You can also make as many photocopies as you’d like of the original document to give to as many people as you want. In the same way, you can open the container and access the software as many times as you like, wherever you are located.
You don’t have to download any additional programs, as the image runs within any browser. Anyone who has access to Docker can run this image, no matter what software infrastructure they are running.
If you want to change something within the original image, you can go back into the Docker file and change the version, take a snapshot of the image, and redeploy it.
What are the benefits for learning environments of containerizing my software?
Firstly, when you’re training multiple users with varying level of product knowledge, you don’t want to set them up in a real-world production environment. What the users need is a sandbox environment where they are safe in the knowledge that they can play around with the software as much as they like without breaking anything or damaging your infrastructure.
Using Docker containers also means that learners don’t have to waste time downloading and installing programs, extensions or any other dependencies. They can open a Docker container in their browser –– on any device including mobile devices and tablets –– and get started straight away.
This is particularly useful when the learners work in an industry or company –– such as a bank or a hospital –– where their computer infrastructure is locked down and they don’t have the right system access to download programs.
Docker containers are also useful when it comes to troubleshooting and tracking learners’ progress. Traditionally, trainers had no access to learners’ local machines, and either couldn’t tell or couldn’t help if something didn’t install properly or was broken.
As Docker containers run in the cloud, trainers and system administrators can easily audit the environment, helping resolve any problems themselves, and checking how much of the material they have completed.
This makes training cheaper, more efficient, and much less stressful for the learner.
Are you interested in learning more about how container-based training can benefit your company, and take your learners to the next level? Take a tour of Appsembler’s Virtual Labs, the leading platform for hands-on, immersive, and personalized software training that’s powered by Docker.