Containers, containers everywhere...

Table of Contents
Why bother
Mostly as a self-challenge to get exposure and some hands on with technology that I don't get to work with (yet) and as a preamble to a subsequent post on deploying and running containers in the cloud. I won't get into why you'd want to deploy containers since a quick google search will pull up a myriad of results on their benefits and use cases.
Arm yourself with:
- Tenacity & patience
- Some basic Linux knowledge
- Windows Subsystem for Linux
- Docker Desktop
- Not mandatory but useful to have - VS Code editor
- Did I already mention tenacity...maybe some scotch too 🥃
In Order of Operations:
Enable WSL and whatever Linux distro MS offers for WSL:
wsl --set-default-version 2
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
The operation completed successfully.
If you've already enabled WSL and installed your distro of choice (my preference is Debian) you'll need to upgrade it from WSL 1 to WSL 2:
wsl --set-version Debian 2
Things that will test your patience:
Virtualization not enabled in BIOS
If you don't have virtualization enabled in BIOS, close your 5 browser windows with 20+ tabs each and reboot so you can enable it.
Need to enable WSL
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Docker command not in PATH
Typing docker will result in:
The term 'docker' is not recognized as a name of a cmdlet, function, script file, or executable program.Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Go ahead and add the C:\Program Files\Docker\Docker\resources\bin
location to the PATH environment variable.
Docker WSL integration

Port conflict
If you already have something running on port 80, and if you follow the extremely well written Docker Getting Started guide (whoever wrote it deserves a huge raise), you will run into the inability to launch the container since it will try to bind to port 80.
The way to overcome it is to either kill whatever is running on that port, or to map a different port like so:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d34b2c77283 docker/getting-started:latest "/docker-entrypoint.…" 41 hours ago Up 41 hours 0.0.0.0:81->80/tcp happy_chandrasekhar
Useful commands:
docker ps
- lists all running images
docker ps -a
- lists all images, regardless of state
docker run -dp 81:80 <name of container>
- maps port 80 in the container to port 81 on the host (avoiding any port conflict you may have due to a service running on port 80) and runs the container in a detached mode.