Newer
Older
dockersand / README.md
# 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"
8 How to tag `docker` images
* How to use `ansible` to create and destroy a `docker` network
* How to use `ansible` to create, restart, and destroy `docker` servers
* How host and `ssh` keys are managed on a `docker` instance
* How to enable `ssh` access to a `docker` instance
* 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 `1777`


# 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
* Use `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 `dockersand1` through `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 `/etc/hosts`
file.


# Building The `docker` Image


# Start The `docker` Network And Sandboxes


# Logging In

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 (`test`).

Once you are logged in, you can promote yourself to `root` using the
`sudo` command without any further password required.

# Sharing Files

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.