Creating a Docker Container on Windows for a Bmad Distribution
Docker for Windows requires Hyper-V, which is a component of Windows. Hyper-V is not available on Windows Home edition. You should first verify that virutalization is enabled in your BIOS settings. To enable Hyper-V on Windows, follow the instructions at here
If you normally run as a non-administrative user (you will of course have to enable Hyper-V, and install Docker as an administrative user), you may need to add that user to the Hyper-V Administrators
group. To do so, right click on the start menu icon, select Computer Management
, then you can add the non-administrative to the Hyper-V Administrators
group via Groups
under Local Users and Groups
. If the Hyper-V Administrators
group doesn't exist, just create it. There is also a docker-users
group that will be created after the Docker installation; you will need to add that user to this group as well.
You will need an X server. I recommend VcXsrv; you can obtain an installer from here
. Using a different X server should be fine, but you will need a working xauth
on the Windows side and will need to make a minor modification to the script that connects to the container.
Installation instructions for Docker on Windows can be found here
. You will be creating a Linux container, not
a Windows container. I recommend at least 4 GB of memory and 32 GB of disk be allocated to the Docker VM (this can be adjusted in settings after starting Docker). Do not be overly generous with the RAM allocation, or Docker may not start.
Build the image
The first step in the process is to get what Docker calls an image
. Create a folder and place Dockerfile
, and bashrc
there. The open a PowerShell window in that folder and type docker build -t bmad .
(don't forget the period). Now go find some way to amuse yourself for a while. If you see Successfully tagged bmad:latest
, you have successfully built the image
Start the container
Now that you have the bmad image
, you can create a container
for the image and run it. To do that, type docker run -d -ti --name bmad bmad
. Alternatively, if you want to make a folder on the host system available to the container, you can type docker run -d -ti -v C:\Users\scootaloo\bmad:/data --name bmad bmad
, which will make the folder C:\Users\scootaloo\bmad available in the container as the directory /data. You do not need to be in the build folder to execute the docker run
command. You will only need to do this once. If your shut down your machine, you will need to re-start this container (see the instructions below). At this point the container is running, and you are ready to connect to it.
Connect to the container
At this point, make sure your X server is running. The following instructions apply to VcXsrv, but similar instructions will apply for any X server. You should see the icon
in your notification area (but with whatever background you happen to have there) if the X server is running. To start the X server, go into the Start menu, select the VcXsrv folder, and select XLaunch
VcXsrv). Click through the defaults and the server should start.
Now to connect the container. Download run-bmad.ps1
. Note that you will need to modify the path to xauth
in that script if you use an X server other than VcXsrv. Open a PowerShell window, and execute the script you downloaded. You should now have a bash
shell prompt, and tao
will be in your path.
When you shut down your system, the docker container
will stop. If that happens the run-bmad.ps1
script will not work, since there is no running container to connect to. In that case, you can simply restart the container with docker start bmad
If you need to edit text files, the container has the standard Linux editors vi
, as well as the Gnome editor gedit
- 09 Jul 2020