Over the last few months, there has been quite a few blog posts and discussions on social media based on blogs posts from Docker, Microsoft and Mirantis indicating new pricing structure. In this blog post I will try to make the options for running Business Central on Docker clear.
The two major products used for running Business Central containers are Docker Desktop and Mirantis Container Runtime (formerly known as Docker Engine – Enterprise). Both products include Docker Engine and adds a number of additional components and features which might be relevant for you. Docker Engine can however also be installed alone and is sufficient for running BcContainerHelper and the Business Central Generic image.
This blog post will NOT just tell you how to install Docker Engine, as that might not be the right option for you. Instead, I will walk through the different options you have and you will have to decide on what is best for you.
On August 31st, Docker announced updated product subscriptions, which means that for companies with more than 250 employees using Docker and companies with a revenue of more than 10mio US$, Docker Desktop is no longer free, but will have a per user pricing. Docker Desktop Subscription overview can be found here. The new subscription includes a grace period until January 31st 2022, after which you need to conform to the new licensing rules or uninstall Docker Desktop.
Official installation instructions for Docker Desktop can be found here.
For most people running Windows Desktop, I recommend using Docker Desktop. Even It comes with an installer and a nice GUI with some tools for helping you out if Docker acts out.
Personally, I am subject to the licensing cost (Microsoft does have slightly more than 250 employees AND we have slightly more than $10mio in revenue) and even though I do not see $5 a month as a problem for using an amazing tool like Docker Desktop, I right now do not have a way to pay as the licensing will be calculated for all of Microsoft.
If Microsoft signs an enterprise agreement of some kind with Docker before January 31st, I will re-install Docker Desktop. Until then, I will be installing Docker Engine on my machine.
A comparison between Docker Desktop and Docker Engine can be found here.
Mirantis Container Runtime (formerly Docker Engine – Enterprise)
Shortly after, on September 27th, Microsoft announced that support for Mirantis Container Runtime (formerly known as Docker Engine – Enterprise) will transition to Mirantis support services. On the same day, Mirantis acknowledged this and mentioned a pricing structure for Mirantis Container Runtime and indicating that support for this would not be included in standard pricing and would be subject to additional pricing. Pricing is currently in beta and might be subject to change.
Microsoft will no longer maintain the MicrosoftDockerProvider repository, which then also means that the DockerMsftProvider PowerShell module will no longer be supported and if you are using this module, you will need to find a different way of installing Docker.
Official installation instructions for Mirantis Container Runtime can be found here.
Mirantis Container Runtime is positioned as enterprise scale container runtime and are primarily focusing on functionality targeting this segment. I have used Docker Engine – Enterprise on Windows Server, but primarily because it was available using the DockerMsftProvider PowerShell module and it was free on Windows Server.
I do not see a problem in the pricing model of Mirantis Container Runtime. In fact, I think it is a very good deal if you are using any of the components Mirantis Container Runtime provides. BcContainerHelper and the Business Central generic image isn’t utilizing any of the added functionality provided in Mirantis Container Runtime and going forward, I will be installing Docker Engine on Windows Server.
Docker Engine consists of Docker Daemon and Docker CLI (Command Line Interface). Both projects are Open Source, licensed under the Apache 2.0 license. Note that Docker Engine doesn’t come with a support plan. If you need a support plan, you need Docker Desktop or Mirantis Container Runtime.
The binaries for Docker Engine can be downloaded from Docker here.
Looking at the Docker binaries, the .zip files basically consists of two files. Docker.exe (CLI) and DockerD.exe (Daemon). If you want to go even deeper, the source for the Docker Daemon is in the moby project and the Docker Client is in the Docker CLI project. You can build both projects yourself if you like. The moby project is fairly straightforward, the CLI project is a bit more complex to get building.
Official installation instructions for Docker Engine can be found here.
Docker Engine can also be installed using Chocolatey, using the Docker-Engine chocolatey package (as I learned from Chris Blank during my session @ Directions EMEA, thanks:-))
Docker Engine contains all functionality needed for running BcContainerHelper and the Business Central generic image.
Personally, I am not using the Chocolatey packages. Instead I have created a PowerShell script, which installs or updates Docker Engine on my machine. This script was created based on the information on the Docker Docs page.
Note that this script is NOT supported and I only recommend you to use this script if you understand what it does and can fix issues if any occurs on your machine.
This PowerShell script can be found here.
And, BTW – if something fails and you need to reset your docker installation, you can use this script, which is explained in this blog post from December 2018 – you cannot just remove the c:\programdata\docker folder manually.
Hope this helps