Browse code

Added information about Docker's high level tools over LXC. Formatting cleanup. Mailing list cleanup.

Andy Rothfusz authored on 2013/08/14 05:45:07
Showing 3 changed files
... ...
@@ -2,9 +2,10 @@
2 2
 :description: Documentation for docker Registry and Registry API
3 3
 :keywords: docker, registry, api, index
4 4
 
5
+.. _registryindexspec:
5 6
 
6 7
 =====================
7
-Registry & index Spec
8
+Registry & Index Spec
8 9
 =====================
9 10
 
10 11
 .. contents:: Table of Contents
... ...
@@ -9,40 +9,140 @@ FAQ
9 9
 Most frequently asked questions.
10 10
 --------------------------------
11 11
 
12
-1. **How much does Docker cost?**
12
+How much does Docker cost?
13
+..........................
13 14
 
14 15
    Docker is 100% free, it is open source, so you can use it without paying.
15 16
 
16
-2. **What open source license are you using?**
17
-
18
-   We are using the Apache License Version 2.0, see it here: https://github.com/dotcloud/docker/blob/master/LICENSE
19
-
20
-3. **Does Docker run on Mac OS X or Windows?**
21
-
22
-   Not at this time, Docker currently only runs on Linux, but you can use VirtualBox to run Docker in a
23
-   virtual machine on your box, and get the best of both worlds. Check out the :ref:`install_using_vagrant` and :ref:`windows` installation guides.
24
-
25
-4. **How do containers compare to virtual machines?**
26
-
27
-   They are complementary. VMs are best used to allocate chunks of hardware resources. Containers operate at the process level, which makes them very lightweight and perfect as a unit of software delivery.
28
-
29
-5. **Can I help by adding some questions and answers?**
17
+What open source license are you using?
18
+.......................................
19
+
20
+   We are using the Apache License Version 2.0, see it here:
21
+   https://github.com/dotcloud/docker/blob/master/LICENSE
22
+
23
+Does Docker run on Mac OS X or Windows?
24
+.......................................
25
+
26
+   Not at this time, Docker currently only runs on Linux, but you can
27
+   use VirtualBox to run Docker in a virtual machine on your box, and
28
+   get the best of both worlds. Check out the
29
+   :ref:`install_using_vagrant` and :ref:`windows` installation
30
+   guides.
31
+
32
+How do containers compare to virtual machines?
33
+..............................................
34
+
35
+   They are complementary. VMs are best used to allocate chunks of
36
+   hardware resources. Containers operate at the process level, which
37
+   makes them very lightweight and perfect as a unit of software
38
+   delivery.
39
+
40
+What does Docker add to just plain LXC?
41
+.......................................
42
+
43
+   Docker is not a replacement for LXC. "LXC" refers to capabilities
44
+   of the Linux kernel (specifically namespaces and control groups)
45
+   which allow sandboxing processes from one another, and controlling
46
+   their resource allocations.  On top of this low-level foundation of
47
+   kernel features, Docker offers a high-level tool with several
48
+   powerful functionalities:
49
+
50
+   * *Portable deployment across machines.* 
51
+      Docker defines a format for bundling an application and all its
52
+      dependencies into a single object which can be transferred to
53
+      any Docker-enabled machine, and executed there with the
54
+      guarantee that the execution environment exposed to the
55
+      application will be the same. LXC implements process sandboxing,
56
+      which is an important pre-requisite for portable deployment, but
57
+      that alone is not enough for portable deployment. If you sent me
58
+      a copy of your application installed in a custom LXC
59
+      configuration, it would almost certainly not run on my machine
60
+      the way it does on yours, because it is tied to your machine's
61
+      specific configuration: networking, storage, logging, distro,
62
+      etc. Docker defines an abstraction for these machine-specific
63
+      settings, so that the exact same Docker container can run -
64
+      unchanged - on many different machines, with many different
65
+      configurations.
66
+
67
+   * *Application-centric.* 
68
+      Docker is optimized for the deployment of applications, as
69
+      opposed to machines. This is reflected in its API, user
70
+      interface, design philosophy and documentation. By contrast, the
71
+      ``lxc`` helper scripts focus on containers as lightweight
72
+      machines - basically servers that boot faster and need less
73
+      RAM. We think there's more to containers than just that.
74
+
75
+   * *Automatic build.* 
76
+      Docker includes :ref:`a tool for developers to automatically
77
+      assemble a container from their source code <dockerbuilder>`,
78
+      with full control over application dependencies, build tools,
79
+      packaging etc. They are free to use ``make, maven, chef, puppet,
80
+      salt,`` Debian packages, RPMs, source tarballs, or any
81
+      combination of the above, regardless of the configuration of the
82
+      machines.
83
+
84
+   * *Versioning.* 
85
+      Docker includes git-like capabilities for tracking successive
86
+      versions of a container, inspecting the diff between versions,
87
+      committing new versions, rolling back etc. The history also
88
+      includes how a container was assembled and by whom, so you get
89
+      full traceability from the production server all the way back to
90
+      the upstream developer. Docker also implements incremental
91
+      uploads and downloads, similar to ``git pull``, so new versions
92
+      of a container can be transferred by only sending diffs.
93
+
94
+   * *Component re-use.* 
95
+      Any container can be used as a :ref:`"base image"
96
+      <base_image_def>` to create more specialized components. This
97
+      can be done manually or as part of an automated build. For
98
+      example you can prepare the ideal Python environment, and use it
99
+      as a base for 10 different applications. Your ideal Postgresql
100
+      setup can be re-used for all your future projects. And so on.
101
+
102
+   * *Sharing.*
103
+      Docker has access to a `public registry
104
+      <http://index.docker.io>`_ where thousands of people have
105
+      uploaded useful containers: anything from Redis, CouchDB,
106
+      Postgres to IRC bouncers to Rails app servers to Hadoop to base
107
+      images for various Linux distros. The :ref:`registry
108
+      <registryindexspec>` also includes an official "standard
109
+      library" of useful containers maintained by the Docker team. The
110
+      registry itself is open-source, so anyone can deploy their own
111
+      registry to store and transfer private containers, for internal
112
+      server deployments for example.
113
+
114
+   * *Tool ecosystem.* 
115
+      Docker defines an API for automating and customizing the
116
+      creation and deployment of containers. There are a huge number
117
+      of tools integrating with Docker to extend its
118
+      capabilities. PaaS-like deployment (Dokku, Deis, Flynn),
119
+      multi-node orchestration (Maestro, Salt, Mesos, Openstack Nova),
120
+      management dashboards (docker-ui, Openstack Horizon, Shipyard),
121
+      configuration management (Chef, Puppet), continuous integration
122
+      (Jenkins, Strider, Travis), etc. Docker is rapidly establishing
123
+      itself as the standard for container-based tooling.
124
+
125
+Can I help by adding some questions and answers?
126
+................................................
30 127
 
31 128
    Definitely! You can fork `the repo`_ and edit the documentation sources.
32 129
 
33 130
 
34
-42. **Where can I find more answers?**
131
+Where can I find more answers?
132
+..............................
35 133
 
36 134
     You can find more answers on:
37 135
 
38
-    * `Docker club mailinglist`_
136
+    * `Docker user mailinglist`_
137
+    * `Docker developer mailinglist`_
39 138
     * `IRC, docker on freenode`_
40 139
     * `Github`_
41 140
     * `Ask questions on Stackoverflow`_
42 141
     * `Join the conversation on Twitter`_
43 142
 
44 143
 
45
-    .. _Docker club mailinglist: https://groups.google.com/d/forum/docker-club
144
+    .. _Docker user mailinglist: https://groups.google.com/d/forum/docker-user
145
+    .. _Docker developer mailinglist: https://groups.google.com/d/forum/docker-dev
46 146
     .. _the repo: http://www.github.com/dotcloud/docker
47 147
     .. _IRC, docker on freenode: irc://chat.freenode.net#docker
48 148
     .. _Github: http://www.github.com/dotcloud/docker
... ...
@@ -2,6 +2,8 @@
2 2
 :description: Dockerfiles use a simple DSL which allows you to automate the steps you would normally manually take to create an image.
3 3
 :keywords: builder, docker, Dockerfile, automation, image creation
4 4
 
5
+.. _dockerbuilder:
6
+
5 7
 ==================
6 8
 Dockerfile Builder
7 9
 ==================