This small repo provides two Dockerfiles for creating Ubuntu servers for development purposes.
The base dockerfile produces a minimal Ubuntu containing one user with configured locale.
The developer dockerfile extends base to add a small suite of essential developer tools
There are a few scripts to spin up new servers and destroy unwanted ones:
see the repo sources.
Builds the dockerfile using a supplied name.
build owner/name:tag [language] [country] [timezone]
build owner/name [language] [country] [timezone]
build name [language] [country] [timezone]
The optional language is two-letter code, e.g. "en".
The optional country is two-letter code, e.g. "GB".
The optional timezone is one of the valid choices, e.g. "Europe/London".
Stops and removes the named container (if present), then destroys the image also.
This augments the existing
docker rm and
docker rmi commands and is only really intended
for a cycle of working on the Dockerfile, testing, and repeating.
The third script is named after stevedore, an archaic term for a dock worker.
It allows rapid connecting to the container running Ubuntu, starting it if necessary:
steve owner/name:tag [run-options]
steve owner/name [run-options]
steve name [run-options]
You can use this many times over to connect to the same running instance, as defined by the name
you supply. If you want to run several different instances, use
docker tag to make aliases of
the images with the names you need. Then use
steve to start each of them.
run-options are passed to the docker run
command when the image is started. You might include
- one or more port mappings (e.g. "-p 22:22")
- one or more volume mappings (e.g. "-v /data:/data")
- one or more links (e.g. "--link db:db")
But note that you cannot change the options of an instance once created; if you want to change
docker rm -f the existing container first.
Because terminal sessions are inherently part of the purpose of this docker image, you would not
normally use -a, --attach, -i, --interactive, -t nor --tty. Similarly, you would not need to set
the workdir with -w or --workdir.