It has never been easier… (NAV on Docker #2)


As of this morning, all shipped cumulative updates (+ all localizations) of Microsoft Dynamics NAV 2016 and 2017 are available as Docker images in the Docker Hub, ready for execution on a Windows system with Docker installed.

How do I use them?

This means, that if you have a computer running Windows 10 Professional edition or Windows Server 2016, you can install Docker (follow this blog post until the Set up an ASP.NET... section or for Windows Server 2016, you can install the EE version by following this blog post) and run:

C:\>docker run -e accept_eula=Y -m 4G microsoft/dynamics-nav

in a Command Prompt running as Administrator and get the W1 country version of the latest cumulative update of the latest version of NAV running on your computer within a few minutes (the first time will take more time for downloading base components)

Or you can run any other cumulative update (of 2016 or 2017), just by specifying the version, the CU and the country version you want as a tag:

C:\>docker run -e accept_eula=Y -m 4G microsoft/dynamics-nav:2016-cu5-dk

Note: One of my next posts will be a troubleshooting blog post - what can you do if things doesn't work.

Where is my NAV!

When you execute the docker run command, Docker will start downloading the image if it doesn't already exist. After downloading the image from the docker hub, you should be seeing something like this:

and if you open up your internet browser and type in the Web Client URL, you should be prompted with a login dialog, where you can login with the NAV Admin Username/Password displayed:

So you are clearly running NAV somewhere but if you investigate your system, you won't find this version of NAV installed. You also might not be running IIS or SQL Server, so how in earth can NAV run on my box with database, Web Client and all?

If you investigate your Hyper-V Manager you also won't see any Virtual Machines, so...

Is it magic?

When every other attempt to explain something fails, it must be magic, right?

Well fortunately, there are good explanations to what you are seeing. You are running NAV in a Container (aka NAV on Docker). It is kind of a Virtual Machine, but then again it isn't. For now, the only thing you really need to know is, that what's inside the container is isolated from the host, meaning that you can run any number of containers (resources allowing) side by side without any conflicts.

Yes, that also means that you can run different versions, different cumulative updates and different localization's of NAV very efficiently side by side.

OK, I get it!, but is this it?

Now you might be thinking: So, I can run the NAV Web Client towards the NAV Demo Database - big deal - but I need much more than that, can I ...???

And you certainly can get much more than that.

In fact, you can:

  • use your own database in the Container
  • connect to your own SQL Server
  • integrate NAV with your AD (and use Windows Authentication)
  • avoid the SSL warning when running locally
  • use the Classic Development Environment and customize NAV
  • use the Windows Client
  • split Web Client and Service Tier
  • and a lot lot more

You can really configure the service tier inside the container the way you want. Some things can be done just by specifying a parameter, some things might require PowerShell code.

The idea is that I will write up a series of blog posts on how to achieve a number of these things.

 

Enjoy

Freddy Kristiansen
Technical Evangelist

Comments (17)

  1. Peter says:

    Great! Thanks a lot, Freddy – I’m especially looking forward seeing how we run the Dev Environment using Docker.

    PS: If anybody else gets a huge (30+ lines) error mentioning Docker is unable to connect to the virtual machine, then try reducing the memory parameter to 3G and/or close all unnecessary programs to free memory. My old 8 GB clean Win10 pc could not start NAV2017-DK with the 4G parameter. (Exact Danish error: “Der kunne ikke oprettes forbindelse til den virtuelle maskine, der er vært for objektbeholderen. (0xc0370108)”)

  2. Pallea says:

    I am in love 😉 NICE work!!!

  3. Ohlfsen says:

    Thumbs up!!!

  4. Shai says:

    Can we get Dynamics CRM/CEM 365 on Docker too ?

    1. FreddyDK says:

      I don’t know whether CRM is heading down the Docker route, you would have to ask your contact in CRM about this.

  5. Rafael says:

    I am stunned how smart this is. Great work!

    Took me like 10 minutes of work to get it to run. Out of those 5 were for installing docker, 3 for figuring out I needed to set docker to windows containers and 2 for figuring out one should use the cmd prompt in admin mode. All my fault since I was too lazy to read the troubleshooting info in the first place 🙂
    So next time it will be barely seconds of work.

    Now I would love to have a container for the development previews – are there already any by chance?

    1. FreddyDK says:

      October devpreviews have just been uploaded to the docker hub.

      docker pull microsoft/dynamics-nav:devpreview-finus

  6. Thomas says:

    Great initiative. Unfortunately it is impossible for me to install it. Get this error message:
    docker: failed to register layer: re-exec error: exit status 1: output: ProcessUtilityVMImage C:\ProgramData\Docker\windowsfilter\7969b3157765c1a1dd8a472c6200a9facbb45b32419271a83a4d99bcc83362ce\UtilityVM: The process cannot access the file because it is being used by another process.

    As far as I can read on the docker forum it is due to antivirus software 🙁 which I cannot uninstall…

    1. FreddyDK says:

      Sorry to hear that, I will expect that docker or your antivirus software will be working on fixing this.
      Which antivirus software are you running (just for the record so that I know if other people have the same issue)?

      1. Thomas says:

        Kaspersky Endpoint Security 10 for Windows. Apparently there are problems with several AV programs 😐

        https://github.com/moby/moby/issues/30296

        1. Thomas says:

          Hi Freddy, and update on this issue. After uninstalling Kaspersky AV it is possible to get the images, so I can confirm that AV was the reason I could not pull images.

          1. FreddyDK says:

            Good to know, thanks

  7. Ivan Đorđević says:

    After initial command:

    C:\>docker run -e accept_eula=Y -m 4G microsoft/dynamics-nav:2016-cu5-dk

    that downloaded your NAV image, how do you access that same environment each day where you have for example added customization? Seems like docker run command each time creates a new container.

    1. FreddyDK says:

      Correct – docker run starts a new container.
      Docker stop/start stops and starts containers.
      I suggest you go here: https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/ and kickstart your knowledge about docker:-)

      1. Ivan Đorđević says:

        Thanks! Will do!

  8. Dmitry Katson says:

    Hi Freddy, wow blog post!
    How about real magic to run it on MAC OS? =)

    1. FreddyDK says:

      Thanks. I don’t think you would run the service tier on MAC (even if MAC could run Docker).
      But… – you can host the service tier in a container on azure and use VS Code on MAC to develop your solution and run NAV Web Client.

Skip to main content