# 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 And Use From This * How to build a `docker` image from a "dockerfile" * 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 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 configure and start a `docker` network * Use `ansible` to start your 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 `docksand1` through `docksand10`. 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 # Create The `docker` 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.