Docker Sandboxes The Easy Way
This repo provides a fast track to spinning up docker containers as "servers". You can log into these and do most of the things you do an a "real" server or VM.
Things You Can Learn From This
- How to build a
docker image from a "dockerfile"
- How to use
ansible to create and destroy a
- How to use
ansible to create, restart, and destroy
- How host and
ssh keys are managed on a
- How to enable
ssh access to a
- How to share files between
docker containers or between the host and a container
But this is not a "toy" system. What you see here is a public subset of what we use all the time here at the TundraWare Intergalactic HQ. We use this for software development, testing new distributed computing ideas, and doing custom builds in a sanitized environment.
Prep Work: What You Need To Do First
The content of this repo assumes you have done several things:
- You've got
docker already running on your machine
- You've made
docker access available to your own login
- You've got
ansible installed on your machine
/shared exists on your host machine with permissions
Quickstart For The Impatient
Here's the 10,000 foot view of what you'll have to do once the Prep Work above is done:
- Configuring sandbox hostname resolution
- Build a
docker image from a dockerfile
ansible to start a
docker network and the sandboxes
- Login to your running sandboxes
Configuring Sandbox Hostname Resolution
Various parts of this repo assume that there are (up to) 10 running sandboxes whose names are
dockersand10. For this to work, you have to configure name resolution to properly associate these names with their equivant IP addresses.
Most likely, you don't have control of your DNS configuration. The easy way around this is to add the entries you find in
dockerfiles/common/etc/dockersand.hosts to your own
docker Network And Sandboxes
These sandboxes are setup so you can login from your host machine into the running sandboxes using
ssh keys. You will find the keys under
dockerfiles/common/.ssh/. There is also an
ssh configuration stanza you can add to your own
~/.ssh/config to get your client to use the proper key.
However, it is also possible to login using name (
test) and password (
Once you are logged in, you can promote yourself to
root using the
sudo command without any further password required.
The sandboxes are created to share the
/shared directory with the host machine. Any file you put there is visible from any of the sandboxes and/or the host machine. This makes it easy to share or move data between the host and any of the sandboxes or between the sandboxes themselves.