Zero to Peanut Butter Docker Time in 78 Seconds


containers, docker, performance cloud servers, speed

With the launch of our new Performance Cloud Servers - we’ve got speed. Lots of speed. Oodles of speed. I’ve got more benchmarks and data to post, but one of the things I’ve been meaning to do prior to this launch is to show how quickly you can get up and running with something else that’s rocking the tech world: Docker.

Two cool things - Performance Cloud Servers and Docker - what I want to show you today is how quickly you can go from zero to full on Docker setup. (tl;dr: 78 seconds.)

First, what is Docker

From their lovely page:

Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.

Ok, so containers are cool. They are a light weight system to create isolated instances of the individual daemons, components and other pieces that might make up your application, CI/CD system, etc. The Docker community itself is vibrant, and growing at an astounding rate.

This is all pretty amazing - and not to mention the latest Nova release in OpenStack Havana actually supports Docker as an option for the underlying hypervisor (ala Xen) which means:

Let’s do this.

Ok, so I’m going to ride the command line like a cowboy - using the rackspace-novaclient configured like this:

[rack] pug:~ jesse$ pip install rackspace-novaclient
... stuff ...

[rack] pug:~ jesse$ cat ~/.bash_profile
export OS_AUTH_URL=https://identity.api.rackspacecloud.com/v2.0/
export OS_AUTH_SYSTEM=rackspace
export OS_REGION_NAME=IAD
export OS_USERNAME=<my username>
export OS_TENANT_NAME=" "
export NOVA_RAX_AUTH=1
export OS_PASSWORD=<my api key, momma didn't raise no fool>
export OS_NO_CACHE=1

Note: As pointed out in the Performance Cloud Servers post - currently the IAD region is the only one with the full rollout, all other regions following within the month.

So, let’s boot a 1GB performance server (and pass in an SSH key via –key_name) and time it:

[rack] pug:~ jesse$ time nova boot Docker1GB --flavor performance1-1 --image 62df001e-87ee-407c-b042-6f4e13f5d7e1 --key_name my_key --poll
...stuff...
Instance building... 100% complete
Finished

real    0m42.404s
user    0m0.335s
sys 0m0.122s

42 seconds to boot the image - now let’s update and install docker, following the Ubuntu 13.04 instructions for Docker and this little gist:

Go go go go:

root@docker1gb:~# chmod a+x setup_docker.sh
root@docker1gb:~# time ./setup_docker.sh
...snip...
ldconfig deferred processing now taking place
Unable to find image 'ubuntu' (tag: latest) locally
Pulling repository ubuntu
8dbd9e392a96: Download complete
b750fe79269d: Download complete
27cf78414709: Download complete
root@55c7a4c11356:/# exit
exit

real    0m36.510s
user    0m3.384s
sys 0m0.532s

And there you have it; 36 seconds to apt-get update, and install Docker and then exit the test shell it executes.

If I’m doing my math right - which is always questionable - that’s 42 seconds to boot the image, and 36 seconds to install and run Docker. 78 seconds ~ a minute and a half.

Doing something neat-o

Ok. So using our new Performance Cloud Servers - and the awesome packaging/installation work of the Docker team, you can boot a Docker server in under two minutes. Let’s go and check out the Docker Registry for something cool to deploy. Doing a quick search, let’s just deploy [Ken Cochrane’s] example Django application:

root@docker1gb:~# docker pull kencochrane/django-docker
root@docker1gb:~# docker run -d -p :8000 kencochrane/django-docker
f14248d20f70

And now we use the docker port command with the image ID to find the public port that Docker exposes with NAT:

root@docker1gb:~/django-docker# docker port f14248d20f70 8000
0.0.0.0:49154

You now have the perfect Django Polls application running in docker, in OpenStack, on crazy fast machines. All in minutes - not hours.

Looking at some of the cool Docker images you could play with:

All of these fit into the 1GB Performance Cloud Server (~20,000 average IOPS/second) easily - and at $29.20/month it fits easily into the Rackspace Developer Discount.

So many IOPS. So Docker. Wow.

Any questions, comments or concerns? You can reach out to me (Jesse Noller) on Twitter, email the developer support team, ping @Rackspace on Twitter, or even reach out to help@rackspace.com.

©2014 Rackspace, US Inc. About Rackspace | Fanatical Support® | Hosting Solutions | Investors | Careers | Privacy Statement | Website Terms | Trademarks | Sitemap