* Updated pre-reqs for 0.9.
* Fixed a couple of docker to Docker.
* Fixed the Docker build example to be correct.
* Reformatted a bunch of paragraphs
Docker-DCO-1.1-Signed-off-by: James Turnbull <james@lovedthanlost.net> (github: jamtur01)
| ... | ... |
@@ -4,19 +4,19 @@ Docker: the Linux container engine |
| 4 | 4 |
Docker is an open source project to pack, ship and run any application |
| 5 | 5 |
as a lightweight container |
| 6 | 6 |
|
| 7 |
-Docker containers are both *hardware-agnostic* and |
|
| 8 |
-*platform-agnostic*. This means that they can run anywhere, from your |
|
| 9 |
-laptop to the largest EC2 compute instance and everything in between - |
|
| 10 |
-and they don't require that you use a particular language, framework |
|
| 11 |
-or packaging system. That makes them great building blocks for |
|
| 12 |
-deploying and scaling web apps, databases and backend services without |
|
| 13 |
-depending on a particular stack or provider. |
|
| 7 |
+Docker containers are both *hardware-agnostic* and *platform-agnostic*. |
|
| 8 |
+This means that they can run anywhere, from your laptop to the largest |
|
| 9 |
+EC2 compute instance and everything in between - and they don't require |
|
| 10 |
+that you use a particular language, framework or packaging system. That |
|
| 11 |
+makes them great building blocks for deploying and scaling web apps, |
|
| 12 |
+databases and backend services without depending on a particular stack |
|
| 13 |
+or provider. |
|
| 14 | 14 |
|
| 15 | 15 |
Docker is an open-source implementation of the deployment engine which |
| 16 |
-powers [dotCloud](http://dotcloud.com), a popular |
|
| 17 |
-Platform-as-a-Service. It benefits directly from the experience |
|
| 18 |
-accumulated over several years of large-scale operation and support of |
|
| 19 |
-hundreds of thousands of applications and databases. |
|
| 16 |
+powers [dotCloud](http://dotcloud.com), a popular Platform-as-a-Service. |
|
| 17 |
+It benefits directly from the experience accumulated over several years |
|
| 18 |
+of large-scale operation and support of hundreds of thousands of |
|
| 19 |
+applications and databases. |
|
| 20 | 20 |
|
| 21 | 21 |
 |
| 22 | 22 |
|
| ... | ... |
@@ -24,10 +24,10 @@ hundreds of thousands of applications and databases. |
| 24 | 24 |
|
| 25 | 25 |
A common method for distributing applications and sandboxing their |
| 26 | 26 |
execution is to use virtual machines, or VMs. Typical VM formats are |
| 27 |
-VMWare's vmdk, Oracle Virtualbox's vdi, and Amazon EC2's ami. In |
|
| 28 |
-theory these formats should allow every developer to automatically |
|
| 29 |
-package their application into a "machine" for easy distribution and |
|
| 30 |
-deployment. In practice, that almost never happens, for a few reasons: |
|
| 27 |
+VMWare's vmdk, Oracle Virtualbox's vdi, and Amazon EC2's ami. In theory |
|
| 28 |
+these formats should allow every developer to automatically package |
|
| 29 |
+their application into a "machine" for easy distribution and deployment. |
|
| 30 |
+In practice, that almost never happens, for a few reasons: |
|
| 31 | 31 |
|
| 32 | 32 |
* *Size*: VMs are very large which makes them impractical to store |
| 33 | 33 |
and transfer. |
| ... | ... |
@@ -47,39 +47,37 @@ deployment. In practice, that almost never happens, for a few reasons: |
| 47 | 47 |
service discovery. |
| 48 | 48 |
|
| 49 | 49 |
By contrast, Docker relies on a different sandboxing method known as |
| 50 |
-*containerization*. Unlike traditional virtualization, |
|
| 51 |
-containerization takes place at the kernel level. Most modern |
|
| 52 |
-operating system kernels now support the primitives necessary for |
|
| 53 |
-containerization, including Linux with [openvz](http://openvz.org), |
|
| 50 |
+*containerization*. Unlike traditional virtualization, containerization |
|
| 51 |
+takes place at the kernel level. Most modern operating system kernels |
|
| 52 |
+now support the primitives necessary for containerization, including |
|
| 53 |
+Linux with [openvz](http://openvz.org), |
|
| 54 | 54 |
[vserver](http://linux-vserver.org) and more recently |
| 55 | 55 |
[lxc](http://lxc.sourceforge.net), Solaris with |
| 56 | 56 |
[zones](http://docs.oracle.com/cd/E26502_01/html/E29024/preface-1.html#scrolltoc) |
| 57 | 57 |
and FreeBSD with |
| 58 | 58 |
[Jails](http://www.freebsd.org/doc/handbook/jails.html). |
| 59 | 59 |
|
| 60 |
-Docker builds on top of these low-level primitives to offer developers |
|
| 61 |
-a portable format and runtime environment that solves all 4 |
|
| 62 |
-problems. Docker containers are small (and their transfer can be |
|
| 63 |
-optimized with layers), they have basically zero memory and cpu |
|
| 64 |
-overhead, they are completely portable and are designed from the |
|
| 65 |
-ground up with an application-centric design. |
|
| 60 |
+Docker builds on top of these low-level primitives to offer developers a |
|
| 61 |
+portable format and runtime environment that solves all 4 problems. |
|
| 62 |
+Docker containers are small (and their transfer can be optimized with |
|
| 63 |
+layers), they have basically zero memory and cpu overhead, they are |
|
| 64 |
+completely portable and are designed from the ground up with an |
|
| 65 |
+application-centric design. |
|
| 66 | 66 |
|
| 67 |
-The best part: because ``docker`` operates at the OS level, it can |
|
| 68 |
-still be run inside a VM! |
|
| 67 |
+The best part: because Docker operates at the OS level, it can still be |
|
| 68 |
+run inside a VM! |
|
| 69 | 69 |
|
| 70 | 70 |
## Plays well with others |
| 71 | 71 |
|
| 72 | 72 |
Docker does not require that you buy into a particular programming |
| 73 | 73 |
language, framework, packaging system or configuration language. |
| 74 | 74 |
|
| 75 |
-Is your application a Unix process? Does it use files, tcp |
|
| 76 |
-connections, environment variables, standard Unix streams and |
|
| 77 |
-command-line arguments as inputs and outputs? Then ``docker`` can run |
|
| 78 |
-it. |
|
| 75 |
+Is your application a Unix process? Does it use files, tcp connections, |
|
| 76 |
+environment variables, standard Unix streams and command-line arguments |
|
| 77 |
+as inputs and outputs? Then Docker can run it. |
|
| 79 | 78 |
|
| 80 | 79 |
Can your application's build be expressed as a sequence of such |
| 81 |
-commands? Then ``docker`` can build it. |
|
| 82 |
- |
|
| 80 |
+commands? Then Docker can build it. |
|
| 83 | 81 |
|
| 84 | 82 |
## Escape dependency hell |
| 85 | 83 |
|
| ... | ... |
@@ -126,14 +124,11 @@ build command inherits the result of the previous commands, the |
| 126 | 126 |
Here's a typical Docker build process: |
| 127 | 127 |
|
| 128 | 128 |
```bash |
| 129 |
-from ubuntu:12.10 |
|
| 130 |
-run apt-get update |
|
| 131 |
-run DEBIAN_FRONTEND=noninteractive apt-get install -q -y python |
|
| 132 |
-run DEBIAN_FRONTEND=noninteractive apt-get install -q -y python-pip |
|
| 133 |
-run pip install django |
|
| 134 |
-run DEBIAN_FRONTEND=noninteractive apt-get install -q -y curl |
|
| 135 |
-run curl -L https://github.com/shykes/helloflask/archive/master.tar.gz | tar -xzv |
|
| 136 |
-run cd helloflask-master && pip install -r requirements.txt |
|
| 129 |
+FROM ubuntu:12.04 |
|
| 130 |
+RUN apt-get update |
|
| 131 |
+RUN apt-get install -q -y python python-pip curl |
|
| 132 |
+RUN curl -L https://github.com/shykes/helloflask/archive/master.tar.gz | tar -xzv |
|
| 133 |
+RUN cd helloflask-master && pip install -r requirements.txt |
|
| 137 | 134 |
``` |
| 138 | 135 |
|
| 139 | 136 |
Note that Docker doesn't care *how* dependencies are built - as long |
| ... | ... |
@@ -143,22 +138,25 @@ as they can be built by running a Unix command in a container. |
| 143 | 143 |
Getting started |
| 144 | 144 |
=============== |
| 145 | 145 |
|
| 146 |
-Docker can be installed on your local machine as well as servers - both bare metal and virtualized. |
|
| 147 |
-It is available as a binary on most modern Linux systems, or as a VM on Windows, Mac and other systems. |
|
| 148 |
- |
|
| 149 |
-We also offer an interactive tutorial for quickly learning the basics of using Docker. |
|
| 150 |
- |
|
| 146 |
+Docker can be installed on your local machine as well as servers - both |
|
| 147 |
+bare metal and virtualized. It is available as a binary on most modern |
|
| 148 |
+Linux systems, or as a VM on Windows, Mac and other systems. |
|
| 151 | 149 |
|
| 152 |
-For up-to-date install instructions and online tutorials, see the [Getting Started page](http://www.docker.io/gettingstarted/). |
|
| 150 |
+We also offer an interactive tutorial for quickly learning the basics of |
|
| 151 |
+using Docker. |
|
| 153 | 152 |
|
| 153 |
+For up-to-date install instructions and online tutorials, see the |
|
| 154 |
+[Getting Started page](http://www.docker.io/gettingstarted/). |
|
| 154 | 155 |
|
| 155 | 156 |
Usage examples |
| 156 | 157 |
============== |
| 157 | 158 |
|
| 158 |
-Docker can be used to run short-lived commands, long-running daemons (app servers, databases etc.), |
|
| 159 |
-interactive shell sessions, etc. |
|
| 159 |
+Docker can be used to run short-lived commands, long-running daemons |
|
| 160 |
+(app servers, databases etc.), interactive shell sessions, etc. |
|
| 160 | 161 |
|
| 161 |
-You can find a [list of real-world examples](http://docs.docker.io/en/latest/examples/) in the documentation. |
|
| 162 |
+You can find a [list of real-world |
|
| 163 |
+examples](http://docs.docker.io/en/latest/examples/) in the |
|
| 164 |
+documentation. |
|
| 162 | 165 |
|
| 163 | 166 |
Under the hood |
| 164 | 167 |
-------------- |
| ... | ... |
@@ -170,13 +168,7 @@ Under the hood, Docker is built on the following components: |
| 170 | 170 |
and |
| 171 | 171 |
[namespacing](http://blog.dotcloud.com/under-the-hood-linux-kernels-on-dotcloud-part) |
| 172 | 172 |
capabilities of the Linux kernel; |
| 173 |
-* [AUFS](http://aufs.sourceforge.net/aufs.html), a powerful union |
|
| 174 |
- filesystem with copy-on-write capabilities; |
|
| 175 |
-* The [Go](http://golang.org) programming language; |
|
| 176 |
-* [lxc](http://lxc.sourceforge.net/), a set of convenience scripts to |
|
| 177 |
- simplify the creation of Linux containers. |
|
| 178 |
- |
|
| 179 |
- |
|
| 173 |
+* The [Go](http://golang.org) programming language. |
|
| 180 | 174 |
|
| 181 | 175 |
Contributing to Docker |
| 182 | 176 |
====================== |
| ... | ... |
@@ -187,7 +179,6 @@ started [here](CONTRIBUTING.md). |
| 187 | 187 |
They are probably not perfect, please let us know if anything feels |
| 188 | 188 |
wrong or incomplete. |
| 189 | 189 |
|
| 190 |
- |
|
| 191 | 190 |
### Legal |
| 192 | 191 |
|
| 193 | 192 |
*Brought to you courtesy of our legal counsel. For more context, |