CP/M-Plus (Z3Plus distribution) emulator running on SIMH AltairZ80 inside an Ubuntu 24.04 Docker container.
apt install simh)docker pull geokm/cpm3plus:latest
docker run -d \\
--name CPM3Plus \\
-p 3003:3001 \\
-v cpm3plus_data:/data \\
--restart unless-stopped \\
geokm/cpm3plus:latest
services:
cpm3plus:
image: geokm/cpm3plus:latest
container_name: CPM3Plus
ports:
- "3003:3001"
volumes:
- cpm3plus_data:/data
restart: unless-stopped
volumes:
cpm3plus_data:
driver: local
On first run, the entrypoint seeds the /data volume with all base disk images from the container image. After that, everything in /data is persistent across restarts. Any changes made inside CP/M (new files, etc.) survive container rebuilds as long as you keep the named volume.
To reset/wipe and re-seed:
docker compose rm -v
# Then docker compose up -d again
All located in the container under /data (and seeded into the volume on first boot):
z3plus.dsk, z3plusb.dsk, z3plusc.dsk — boot/systemi.dsk, j.dsk, k.dsk — IDE hard-disk imagesblank.dsk — blank formatted diskD1/, D2/ — additional programs and dataFF.COM, LU.COM, SWEEP40.COM, etc.FROM ubuntu:24.04
LABEL maintainer="Keith Matthews <[email protected]>"
RUN apt-get update \\
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \\
simh \\
&& apt-get clean \\
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN mkdir -p /home/SIMH/X
# Copy base disk images into the image
COPY base/ /home/SIMH/X/
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh
WORKDIR /home/SIMH/X
EXPOSE 3001/tcp
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/usr/bin/altairz80", "z3plus.ini"]
services:
cpm3plus:
build:
context: .
dockerfile: Dockerfile
container_name: CPM3Plus
ports:
- "3003:3001"
volumes:
- cpm3plus_data:/data
restart: unless-stopped
volumes:
cpm3plus_data:
driver: local
d tracks[0-7] 254
attach dsk0 z3plus.dsk
attach dsk1 z3plusb.dsk
attach dsk2 z3plusc.dsk
attach hdsk0 i.dsk
attach hdsk1 j.dsk
attach hdsk2 k.dsk
reset cpu
d common c000
set cpu 64k
set cpu banked
set cpu itrap
set cpu z80
set cpu altairrom
d clock 0
set sio nosleep
attach sio 3001
boot dsk0
Keith Matthews [email protected]
Content type
Image
Digest
sha256:9a6eb69b6…
Size
39.3 MB
Last updated
5 months ago
docker pull geokm/cpm3plus