Every year Microsoft is releasing a major version of Microsoft Dynamics NAV and on top of that, they release monthly updates for each of these versions. You would love to have all your clients and developed add-ins to be only in the latest version of Microsoft Dynamics NAV. However, we all know that is far from happening (At least for most of us).
 
Technical and functional consultants required to access these different versions all the time. So what is the best way to manage these different versions by keeping the fact of easy access? 
 
Is the best way to install all the versions on one big server? If so next question to answer is how to manage shared resources and conflicts? or to have virtual machines per each version of Microsoft Dynamics NAV? Once again running into a resource issue. 

What is the best way forward? for me, the answer is  Docker and Containers!
 
What is Docker? 
Docker is a containerization platform. In other words, Docker is a software platform which allows to build, test, and deploy applications with no time. 

The key benefit of Docker is that it allows users to package an application with all of its dependencies into a standardized unit for software development, Shipment, and Deployment. This standardized unit is called as containers. 

Docker was first released in the year 2013 and it was developed by Docker. 
 
What is the Container?
A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries, and settings.
 
Container images become containers when they run on Docker Engine (During runtime). Containers are available for both Linux and Windows-based applications, the containerized software will always run the same, regardless of the infrastructure. 
 
Containers provide a higher level of isolation. Which means each container on Docker has its own registry, file system, network layer with its very own published ports and memory space. 
 
Are Containers and Virtual Machines are the same?
In a way, Docker and Containers are a bit like virtual machines, but unlike virtual machines rather than creating a whole virtual operating system, Docker allows applications in the container to use the same kernel as the system that they are running on. This means container should only need to have things which are not available on the host computer. This allows containers to be lightweight and also to provide a good performance boost. 
 
 















Containers run on total isolation and this allows you to run multiple instances of containers side by side without any conflicts. Only you will know that you are working on multiple container instances at the same time. 

Another advantage of containers is they are instant on, just like your TV. Whan, you run a container it does not have to go through all the initializations like normal computers, they know where to pick it up from. Containers also eliminate environment inconsistencies and the "works on my machine" problem by packaging the application, configs, and dependencies into an isolated container.


Is Microsoft release Docker images for Dynamics NAV?
YES! Microsoft does release Microsoft Dynamics NAV Container images to public Docker Hub.
 
How can a Containers be helpful to a NAV developer?
If you want to work and test your code on different versions of Microsoft Dynamics NAV, then Docker containers are the best solution. You do not have to create and configure different VMs to develop and test your code. Once you download the Container Image from Docker Hub you can easily clone the image and setup multiple instances within minutes. 
 
How can I get started with Docker and Containers?
Stay tuned for my next blog post, or if you are in a hurry then read Freddys blog. 
 
Please provide your feedback with a comment. 
Thank you and Regards,
Tharanga Chandrasekara