Quite often I have been asked to explain Docker. In my videos I usually deploy my extensions to a Microsoft Dynamics 365 Business Central running on Docker, but what does it actually mean? In this video, I create a Docker container “from scratch” using the brilliant Container Wizard.

If you want to know more about the basic operation of Docker, this video is a great source.
One of the most frequently asked questions from viewers is about Docker and how it’s used with Business Central. In this video, Erik walks through the entire process of creating a Business Central Docker container using the BC Container Helper wizard, explains the fundamental concepts behind Docker containers, and demonstrates how to work with them in a development workflow.
Getting Started with the BC Container Wizard
Rather than jumping into Visual Studio Code as usual, Erik opens PowerShell and runs a command from the BC Container Helper — a set of tools designed to simplify working with Business Central containers. The key command is:
New-BcContainerWizard
This launches an interactive wizard that walks you through every decision needed to create a new Business Central container.
Walking Through the Wizard Options
Local or Remote
The first choice is where your container will run. You can run it on your local computer or on an Azure VM. For most development scenarios, local is the way to go.
Authentication
Next, you choose how to authenticate into Business Central. Selecting the “NavUserPassword” option means you’ll be prompted for a username and password when the container is created — essentially setting up your login credentials.
Container Name
Give your container a meaningful name. In this demo, Erik names it yt for “YouTube.”
Version Selection
You have two main groups to choose from:
- Cloud Sandbox — Behaves as if you’re working against a cloud sandbox. Choose this if your end target is a SaaS-based version of Business Central.
- On-Prem — Choose this if your target is an on-premises installation.
You can also specify an exact version number (e.g., 16.5.8977906) or simply select the latest version.
Country Localization
Business Central supports a growing list of country localizations. Erik selects the US version for this demo.
Test Toolkit
The test toolkit includes specific extensions containing all the test codeunits. You need these if you plan to run your own tests or Microsoft’s tests. For a basic demo, you can skip this.
Premium Plan
If you need manufacturing or service management functionality, select the premium plan. Otherwise, the essential plan is sufficient.
Test Users
Since the cloud sandbox simulates how users are normally created through Office 365 and synced to BC, the wizard offers to create test users (external accountant, premium user, essential user, admin, team members, etc.).
License File
If you have a developer license, you can point to it here. Erik keeps his in a folder called “navision” — because some names deserve to live on.
Database Options
You have three choices for the database:
- Cronus demo data — Uses the standard demo database on SQL Express inside the container
- Restore a backup — Restore a .bak file into the container’s SQL Express
- Connect to an existing database — Point to a database sitting somewhere else
DNS Configuration
Controls how the container sees the network. The default usually works, but corporate networks may require using Google DNS or a specific primary DNS.
Isolation Mode
Containers can run in two modes:
- Process isolation — Runs directly on the host OS (lighter, all memory available)
- Hyper-V isolation — Runs inside a lightweight VM (more isolated, but requires allocated memory)
If unsure, let the BC Container Helper decide automatically based on your OS version.
Memory Allocation
- 4 GB — Fine for demos
- 4–8 GB — Great for development
- 16 GB — Needed for base app development (but you probably shouldn’t be doing that)
The Generated Script
After completing the wizard, you get a PowerShell script that captures all your selections. Erik saves this to a file and adds one important parameter that the wizard doesn’t include:
-includeAL
This parameter extracts the source code for the base application, which is incredibly useful for understanding standard objects — for example, when you need to modify a standard report and want to see the original source code.
Saving the script is valuable because if something goes wrong (like a typo in a parameter), you can fix and re-run it without going through the entire wizard again.
What Is Docker, Really?
Erik offers this classic joke as an explanation: “It worked on my machine.” “Then we’ll ship your machine!” And that’s how Docker was born.
Virtual Machines vs. Containers
With virtual machines, you have hardware, a hypervisor layer, and inside each VM you get a full operating system, your application, and everything else. Need five instances? That’s five complete operating systems.
Docker takes a different approach. If you’re already running Windows 10, there’s no reason to install another Windows 10 inside a VM. You can reuse the operating system you already have.
The Abstraction Layer
The concept goes back to FreeBSD jails. When an application runs, it has interfaces to the outside world — disk, network, registry, and other resources. Docker inserts an abstraction layer so that when the application thinks it’s accessing C:\app, it’s actually accessing a folder sitting somewhere else entirely.
This means you can run multiple instances of the same application, each believing it has exclusive access to the same paths, ports, and resources — but they’re all redirected to isolated locations.
Network Isolation
Each container gets its own network interface and IP address. Your host machine only has one port 80, but because each container gets its own IP address through this abstraction layer, each one can expose its own port 80 independently.
Container Layers
Inside a container, the image is built up of layers:
- Windows Server Core — The stripped-down server OS
- .NET Framework — Runtime dependencies
- SQL Server — Database engine
- Business Central Worldwide — The core BC application
- Business Central Local — Country-specific localization
A single layer can be as small as a config file or as large as the entire Windows Server stack. The BC Container Helper grabs the correct generic Windows image matching your OS version, downloads the Business Central artifacts for the version you selected, and builds a custom image combining all these layers.
What You Need to Install
Two things are required to get started:
- Docker Desktop for Windows — Download and install it on a Windows 10 Pro machine. After installation, make sure you switch to Windows containers (right-click the Docker whale icon in the system tray). If it says “Switch to Linux containers,” you’re already on Windows containers.
- BC Container Helper (or NavContainerHelper) — Install via PowerShell:
Install-Module BcContainerHelper
Or if you’re using the older name:
Install-Module NavContainerHelper
Exploring the Running Container
Once the container is running, you can interact with it in several ways:
# See running containers
docker ps
# Ping the container by name
ping yt
# Enter the container's command line
Enter-BcContainer -containerName yt
Inside the container, you’re in an entirely different filesystem. The C:\run folder exists inside the container but not on your host machine — that’s the abstraction layer at work.
Shared Folders and File Transfer
A mapped folder exists between your host and the container. On the host side, it’s located at:
C:\ProgramData\NavContainerHelper\Extensions\yt\my\
Files placed here are visible inside the container (and vice versa), which is one way to transfer files in and out of containers.
Accessing the Base App Source Code
Because of the -includeAL parameter, the full source code of the base application is extracted to:
C:\ProgramData\NavContainerHelper\Extensions\Original-17.x.xxxxx.x\
This is where Erik gets the source code for standard reports and other objects when he needs to create report extensions or understand how standard functionality works.
Cleaning Up
When you’re done with a container, removing it is straightforward:
Remove-NavContainer -containerName yt
This removes the container, cleans up the host file entries, and deletes the associated folders. The server simply ceases to exist.
Practical Tips
- Save your scripts — Always save the generated script so you can re-run or modify it without going through the wizard again.
- Watch out for network changes — Docker can get confused if your host machine’s IP address changes (e.g., switching Wi-Fi networks). Shut down containers before changing networks and restart them afterward.
- Pre-download images — The first time you create a container, the download takes a while. Subsequent runs reuse cached layers and are much faster.
- Use the wizard for new scripts — Even for experienced users, the wizard is the easiest way to generate a correct script. You can then store that script in a folder for reuse in pipeline builds.
- Multiple containers — You can have multiple containers running simultaneously (e.g., BC14, BC16.5, BC17) for different projects or versions.
Summary
Docker containers provide a lightweight, isolated environment for running Business Central without the overhead of full virtual machines. Using the BC Container Helper and its wizard, you can spin up a fully configured Business Central instance in minutes, complete with the version, localization, and configuration you need. When you’re done, tear it down just as quickly. This makes Docker an essential tool for Business Central developers who need to work across multiple versions, run tests, or build deployment pipelines.