|
@@ -0,0 +1,191 @@
|
|
|
|
+:title: Manifesto
|
|
|
|
+:description: An overview of Docker and standard containers
|
|
|
|
+:keywords: containers, lxc, concepts, explanation
|
|
|
|
+
|
|
|
|
+.. _dockermanifesto:
|
|
|
|
+
|
|
|
|
+*(This was our original Welcome page, but it is a bit forward-looking
|
|
|
|
+for docs, and maybe not enough vision for a true manifesto. We'll
|
|
|
|
+reveal more vision in the future to make it more Manifesto-y.)*
|
|
|
|
+
|
|
|
|
+Docker Manifesto
|
|
|
|
+----------------
|
|
|
|
+
|
|
|
|
+Docker complements LXC with a high-level API which operates at the
|
|
|
|
+process level. It runs unix processes with strong guarantees of
|
|
|
|
+isolation and repeatability across servers.
|
|
|
|
+
|
|
|
|
+Docker is a great building block for automating distributed systems:
|
|
|
|
+large-scale web deployments, database clusters, continuous deployment
|
|
|
|
+systems, private PaaS, service-oriented architectures, etc.
|
|
|
|
+
|
|
|
|
+- **Heterogeneous payloads** Any combination of binaries, libraries,
|
|
|
|
+ configuration files, scripts, virtualenvs, jars, gems, tarballs, you
|
|
|
|
+ name it. No more juggling between domain-specific tools. Docker can
|
|
|
|
+ deploy and run them all.
|
|
|
|
+- **Any server** Docker can run on any x64 machine with a modern linux
|
|
|
|
+ kernel - whether it's a laptop, a bare metal server or a VM. This
|
|
|
|
+ makes it perfect for multi-cloud deployments.
|
|
|
|
+- **Isolation** docker isolates processes from each other and from the
|
|
|
|
+ underlying host, using lightweight containers.
|
|
|
|
+- **Repeatability** Because containers are isolated in their own
|
|
|
|
+ filesystem, they behave the same regardless of where, when, and
|
|
|
|
+ alongside what they run.
|
|
|
|
+
|
|
|
|
+.. image:: images/lego_docker.jpg
|
|
|
|
+ :target: http://bricks.argz.com/ins/7823-1/12
|
|
|
|
+
|
|
|
|
+What is a Standard Container?
|
|
|
|
+.............................
|
|
|
|
+
|
|
|
|
+Docker defines a unit of software delivery called a Standard
|
|
|
|
+Container. The goal of a Standard Container is to encapsulate a
|
|
|
|
+software component and all its dependencies in a format that is
|
|
|
|
+self-describing and portable, so that any compliant runtime can run it
|
|
|
|
+without extra dependency, regardless of the underlying machine and the
|
|
|
|
+contents of the container.
|
|
|
|
+
|
|
|
|
+The spec for Standard Containers is currently work in progress, but it
|
|
|
|
+is very straightforward. It mostly defines 1) an image format, 2) a
|
|
|
|
+set of standard operations, and 3) an execution environment.
|
|
|
|
+
|
|
|
|
+A great analogy for this is the shipping container. Just like Standard
|
|
|
|
+Containers are a fundamental unit of software delivery, shipping
|
|
|
|
+containers are a fundamental unit of physical delivery.
|
|
|
|
+
|
|
|
|
+Standard operations
|
|
|
|
+~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+Just like shipping containers, Standard Containers define a set of
|
|
|
|
+STANDARD OPERATIONS. Shipping containers can be lifted, stacked,
|
|
|
|
+locked, loaded, unloaded and labelled. Similarly, standard containers
|
|
|
|
+can be started, stopped, copied, snapshotted, downloaded, uploaded and
|
|
|
|
+tagged.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+Content-agnostic
|
|
|
|
+~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+Just like shipping containers, Standard Containers are
|
|
|
|
+CONTENT-AGNOSTIC: all standard operations have the same effect
|
|
|
|
+regardless of the contents. A shipping container will be stacked in
|
|
|
|
+exactly the same way whether it contains Vietnamese powder coffee or
|
|
|
|
+spare Maserati parts. Similarly, Standard Containers are started or
|
|
|
|
+uploaded in the same way whether they contain a postgres database, a
|
|
|
|
+php application with its dependencies and application server, or Java
|
|
|
|
+build artifacts.
|
|
|
|
+
|
|
|
|
+Infrastructure-agnostic
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+Both types of containers are INFRASTRUCTURE-AGNOSTIC: they can be
|
|
|
|
+transported to thousands of facilities around the world, and
|
|
|
|
+manipulated by a wide variety of equipment. A shipping container can
|
|
|
|
+be packed in a factory in Ukraine, transported by truck to the nearest
|
|
|
|
+routing center, stacked onto a train, loaded into a German boat by an
|
|
|
|
+Australian-built crane, stored in a warehouse at a US facility,
|
|
|
|
+etc. Similarly, a standard container can be bundled on my laptop,
|
|
|
|
+uploaded to S3, downloaded, run and snapshotted by a build server at
|
|
|
|
+Equinix in Virginia, uploaded to 10 staging servers in a home-made
|
|
|
|
+Openstack cluster, then sent to 30 production instances across 3 EC2
|
|
|
|
+regions.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+Designed for automation
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+Because they offer the same standard operations regardless of content
|
|
|
|
+and infrastructure, Standard Containers, just like their physical
|
|
|
|
+counterpart, are extremely well-suited for automation. In fact, you
|
|
|
|
+could say automation is their secret weapon.
|
|
|
|
+
|
|
|
|
+Many things that once required time-consuming and error-prone human
|
|
|
|
+effort can now be programmed. Before shipping containers, a bag of
|
|
|
|
+powder coffee was hauled, dragged, dropped, rolled and stacked by 10
|
|
|
|
+different people in 10 different locations by the time it reached its
|
|
|
|
+destination. 1 out of 50 disappeared. 1 out of 20 was damaged. The
|
|
|
|
+process was slow, inefficient and cost a fortune - and was entirely
|
|
|
|
+different depending on the facility and the type of goods.
|
|
|
|
+
|
|
|
|
+Similarly, before Standard Containers, by the time a software
|
|
|
|
+component ran in production, it had been individually built,
|
|
|
|
+configured, bundled, documented, patched, vendored, templated, tweaked
|
|
|
|
+and instrumented by 10 different people on 10 different
|
|
|
|
+computers. Builds failed, libraries conflicted, mirrors crashed,
|
|
|
|
+post-it notes were lost, logs were misplaced, cluster updates were
|
|
|
|
+half-broken. The process was slow, inefficient and cost a fortune -
|
|
|
|
+and was entirely different depending on the language and
|
|
|
|
+infrastructure provider.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+Industrial-grade delivery
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+There are 17 million shipping containers in existence, packed with
|
|
|
|
+every physical good imaginable. Every single one of them can be loaded
|
|
|
|
+on the same boats, by the same cranes, in the same facilities, and
|
|
|
|
+sent anywhere in the World with incredible efficiency. It is
|
|
|
|
+embarrassing to think that a 30 ton shipment of coffee can safely
|
|
|
|
+travel half-way across the World in *less time* than it takes a
|
|
|
|
+software team to deliver its code from one datacenter to another
|
|
|
|
+sitting 10 miles away.
|
|
|
|
+
|
|
|
|
+With Standard Containers we can put an end to that embarrassment, by
|
|
|
|
+making INDUSTRIAL-GRADE DELIVERY of software a reality.
|
|
|
|
+
|
|
|
|
+Standard Container Specification
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+(TODO)
|
|
|
|
+
|
|
|
|
+Image format
|
|
|
|
+~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+Standard operations
|
|
|
|
+~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+- Copy
|
|
|
|
+- Run
|
|
|
|
+- Stop
|
|
|
|
+- Wait
|
|
|
|
+- Commit
|
|
|
|
+- Attach standard streams
|
|
|
|
+- List filesystem changes
|
|
|
|
+- ...
|
|
|
|
+
|
|
|
|
+Execution environment
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+
|
|
|
|
+Root filesystem
|
|
|
|
+^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Environment variables
|
|
|
|
+^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Process arguments
|
|
|
|
+^^^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Networking
|
|
|
|
+^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Process namespacing
|
|
|
|
+^^^^^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Resource limits
|
|
|
|
+^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Process monitoring
|
|
|
|
+^^^^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Logging
|
|
|
|
+^^^^^^^
|
|
|
|
+
|
|
|
|
+Signals
|
|
|
|
+^^^^^^^
|
|
|
|
+
|
|
|
|
+Pseudo-terminal allocation
|
|
|
|
+^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
+
|
|
|
|
+Security
|
|
|
|
+^^^^^^^^
|
|
|
|
+
|