I've been testing some new products we have coming out soon, running through the installation process and creating some basic developer how-to guides. I also wanted to learn more about DevOps and containers in general, and dust off my Linux and other technical skills, so this seems like a perfect time to explore Docker.
So what's special about Docker? Well for me specifically:
- It was easy to create an isolated environment for testing. I didn't have to track down a Linux server for testing, take time to install a fresh image, or worry about mucking up my laptop. By taking the time to create an install recipe ("Dockerfile"), I was able to pretty much automate the build process.
- Docker made it much easier to clean up after test runs and get back to a known good state. Make a mistake and screw something up? Accidentally delete some files? Things aren't working and you're not sure what happened? Who cares?! Just type exit and start a new container!
- I've been hearing a lot about Docker lately and wanted an excuse to try it out!
Installing Docker is ridiculously easy. From your server/desktop/laptop, simply go to https://www.docker.com, click on "Get Started with Docker", and follow the instructions to install Docker Toolbox (on Mac or Windows) or Docker Engine (on Linux). Docker will install a number of helper applications, including Oracle VirtualBox.
The good news is there's a faster and more reliable installation of Docker coming soon: Docker for Mac and Windows! This version is running in an Alpine Linux distribution on top of xhyve hypervisor on Mac OS X or on Hyper-V on Windows. It's in beta as of this writing, but you can learn more and apply for access here: Docker for Mac and Windows Beta: the simplest way to use Docker on your laptop | Docker Blog.
Luckily I've been accepted into the Docker for Mac/Windows beta program and have been playing around with this new version. It's quite an improvement! I'll try to write up my experiences soon.
Example Docker Commands
The Docker Getting Started materials are very good, and after installing Docker I'd suggest working through the whalesay image, building your own image, and other included exercises.
A few other useful command examples:
Get the current client & server Docker versions:
Show all running containers:
Run Ubuntu interactively in a container:
docker run -it ubuntu /bin/bash
See all the images in your local Docker instance:
Remove all stopped containers:
docker rm -v $(docker ps -aq -f status=exited)
Delete a local Docker image (note you'll need to run the above command first or otherwise remove any stopped containers based on the image to be deleted):
docker rmi ubuntu
DockerCon 2016 will be held in Seattle, WA June 19-21, 2016. If you're going drop me a note and we can connect there!
I'm hoping to make this part of a blog series, and you may have already seen my blog post on Kubernetes and Docker. In the next few days we'll post a how-to on installing Docker on the Hitachi Hyper Scale-Out Platform, and as I get experience with them I'll post other how-to guides on using various other Hitachi products with Docker.
sub-Reddit, and these two O'Reilly books are highly recommended:
Let me know what you think: Are you using Docker or another container technology? Which Hitachi products would you like to see as container-friendly or for us to document how to deploy using containers?