This image can be used standalone, or as a base for other images. It provides a nice DOS environment using DOSEMU (similar to DOSBox or VirtualBox).
It also provides a qemu environment and a VNC console for it, running on port 5901. This can be used for various guest OSs.
You can install with:
docker pull jgoerzen/dosemu
And run with:
docker run -d -p 5901:5901 --name mydosemu jgoerzen/dosemu
This image uses supervisor; please see the supervisor/ directory for examples. Adding your own processes is very simple. The supervisor support is provided by jgoerzen/supervisor.
All the fun happens under /dos
.
By default, nodes start the net image and the console starts the basic image.
Also:
/dos/drive_e
throughdrive_k
are shared to the net image systems asE:
throughK:
.E:\BOOTUP.BAT
is called at every boot, and is a nice place to put generic AUTOEXEC-typ commands.G:
is intended to be used for applications (which, in DOS, tend to write to their install directories, so this could make an ideal Docker volume)H:
is intended to be static, and hold utilities, etc.H:\UTILS
is added to the DOS PATH by the default startup scripts.- All drives are mounted in the DOS image by the default startup scripts, though it would be easy to mount the others as well.
- Child images may, but are not required to, follow this convention:
This image uses supervisor; please see the supervisor/ directory for examples. Adding your own processes is very simple.
Multi-node BBSs require multiple DOS sessions. We have to keep the C:
separate on these,
since it contains TEMP
. /usr/local/bin/startdossession
does the hard work for us. It is
authoritative on how a DOS session is started.
VNCPASSWORD
can set the password for the VNC console (maximum 8 characters, a limitation of tightvncserver). If you do not set one, a random password will be assigned on each start of the container, and logged in the docker logs.
VNC is exposed on port 5901. You can connect to this port. You will see, by default, an xterm (white) running here, though child images may alter these defaults.
This is prepared by John Goerzen [email protected] and the source can be found at https://github.com/jgoerzen/docker-dosemu
Docker scripts, etc. are Copyright (c) 2017 John Goerzen All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Additional software copyrights as noted.
- strace on Docker
- magic incantation was: --privileged --cap-add SYS_PTRACE --security-opt seccomp:unconfined
- Dealing with DOS not idling CPU
- Dealing with RunTime Error 200