ArcherPoint Dynamics NAV Developer Digest - vol 165![Developer Dude]()
The NAV community, including the ArcherPoint technical staff, is made up of developers, project managers, and consultants who are constantly communicating, with the common goal of sharing helpful information with one another to help customers be more successful.
As they run into issues and questions, find the answers, and make new discoveries, they post them on blogs, forums, social media...so everyone can benefit. We in Marketing watch these interactions and never cease to be amazed by the creativity, dedication, and brainpower we’re so fortunate to have in this community—so we thought, wouldn’t it be great to share this great information with everyone who might not have the time to check out the multitude of resources out there? So, the ArcherPoint Microsoft Dynamics NAV Developer Digest was born. Each week, we present a collection of thoughts and findings from NAV experts and devotees around the world. We hope these insights will benefit you, too.
Microsoft Docker and Dynamics NAV
The buzz in the Microsoft Dynamics NAV developer world is all about Dynamics NAV images now available on Docker. While this is super cool for developers, some of our other readers may be like me, a layperson, looking for a more basic understanding of what this really means. From the ArcherPoint Yammer thread, we get this:
Jim: For the laymen among us, can you provide a short explanation of Docker and what it brings to our party? I went to the Docker website and it is a bit obtuse to say the least.
Matt: Here is my poor man's explanation, which I may not explain well…Imagine our customer. They have a SQL Server, a NAV Service tier, and clients installed in miscellaneous places. Today we remotely connect to their servers to do development. The future looks different for how we develop for and support these customers.
Docker is a container manager (not at all like our containers modification). Each container holds something, like a piece or set of software. When you want to do development, you launch a new Docker instance and configure what you want (or use a preloaded configuration). So maybe you want SQL Server 2012, with NAV 2013 CU12, with a Job Queue, the development tools, and Visual Studio. Each of those things might be a container, and they stack to build an environment in seconds / minutes.
Then we do our development, deploy it to the user's test environment through the service tier, test it in a web client, and release it. All without ever logging into their system.
Kyle: Think of them as miniature virtual machines that are very portable. You can take the same system (in this case, Windows Server 2016 Core with SQL Express and NAV 2018) loaded into a Docker image, publish it on the internet (as Microsoft did with this announcement), and then easily download and run that Docker image. The Docker image can also be put onto several different platforms. It can run locally on Windows/Mac/Linux (with the Docker application), or on AWS, GCP, or Azure without any modification. It's the portability and the publish/subscribe model that make them useful.
Jim: This helps (a little). I am guessing that there is potential time and cost savings for those managing apps that run in and are deployed in different environments. And these apps can be quickly reconfigured for various permutations as well. Correct me if I am wrong here.
Suresh: Docker is a tool to create and work with containers, whereas Container is lightweight alternate to Virtual Machines, containers are kind of a replacement to Virtual Machine whereas Virtual Machine uses its own operating systems and resources, but Container uses the resources of Host Operating System and it is very quick and easy to spin up a new software.
They are used for deployment of our application and to have uniform environment in DEV, TEST, and PROD Systems. For example if the development team used version NAV 2013 R2 with cumulative update 20, and when they deployed into test the user got an error related to a command which was introduced in CU 20 because the TEST system is running NAV 2013 R2 with Cumulative Update 19, to fix the issue we need to change the code or upgrade the TEST System. Whereas if we use Docker to create a container with all the dependencies and the software which are used for the development and distribute it and then the same container can be used in all our environments which will avoid those kind of dependency errors. It will also help us to spin various versions of NAV using container without conflict and the deployment size is very small compare to Virtual Machines.
Jon: The future is here! And it's magical. Referencing It Has Never Been Easier blog by Freddy.
Kyle notes: There are a few tricks if you want to run this in a VM, since you have to convince the guest OS that it is running on actual metal rather than in a VM and references the How to Run Hyper-V Nested in VMware Workstation article.
What is your experience with NAV on Docker? Tell us in the comments below!
Stay abreast of what is new in the Microsoft Dynamics NAV community and at ArcherPoint by subscribing to our monthly newsletter, Better Business, by completing the form in our Resource Center.
If you are interested in NAV development, be sure to see our collection of NAV Development Blogs.
Read more "How To" blogs from ArcherPoint for practical advice on using Microsoft Dynamics NAV.