October 23, 2014
You only know two things about Docker. First, it uses Linux containers. Second, the Internet won’t shut up about it.
– attributed to Solomon Hykes, Docker CEO
Docker is a relatively new open source application and service, which is seeing interest across a number of areas. It uses recent Linux kernel features (containers, namespaces) to shield processes. While its use (superficially) resembles that of virtual machines, it is much more lightweight as it operates at the level of a single process (rather than an emulation of an entire OS layer). This also allows it to start almost instantly, require very little resources and hence permits an order of magnitude more deployments per host than a virtual machine.
Docker offers a standard interface to creation, distribution and deployment. The shipping container analogy is apt: just how shipping containers (via their standard size and “interface”) allow global trade to prosper, Docker is aiming for nothing less for deployment. A Dockerfile provides a concise, extensible, and executable description of the computational environment. Docker software then builds a Docker image from the Dockerfile. Docker images are analogous to virtual machine images, but smaller and built in discrete, extensible and reuseable layers. Images can be distributed and run on any machine that has Docker software installed—including Windows, OS X and of course Linux. Running instances are called Docker containers. A single machine can run hundreds of such containers, including multiple containers running the same image.
There are many good tutorials and introductory materials on Docker on the web. The official online tutorial is a good place to start; this post can not go into more detail in order to remain short and introductory.
At its core, Rocker is a project for running R using Docker containers. We provide a collection of Dockerfiles and pre-built Docker images that can be used and extended for many purposes.
Rocker is the the name of our GitHub repository contained with the Rocker-Org GitHub organization.
Rocker is also the name the account under which the automated builds at Docker provide containers ready for download.
The Rocker project develops the following containers in the core Rocker repository
We have settled on these three core images after earlier work in repositories such as docker-debian-r and docker-ubuntu-r.
Within the Rocker-org organization on GitHub, we are also working on
Other repositories will probably be added as new needs and opportunities are identified.
The Rocker effort supersedes and replaces earlier work by Dirk (in the docker-debian-r and docker-ubuntu-r GitHub repositories) and Carl. Please use the Rocker GitHub repo and Rocker Containers from Docker.com going forward.
We intend to follow-up with more posts detailing usage of both the source Dockerfiles and binary containers on different platforms.
Rocker containers are fully functional. We invite you to take them for a spin. Bug reports, comments, and suggestions are welcome; we suggest you use the GitHub issue tracker.
We are very appreciative of all comments received by early adopters and testers. We also would like to thank RStudio for allowing us the redistribution of their RStudio Server binary.
Published concurrently at rOpenSci blog and Dirk’s blog