github.com/dahs81/otto@v0.2.1-0.20160126165905-6400716cf085/website/source/intro/vs/docker.html.md (about)

     1  ---
     2  layout: "intro"
     3  page_title: "Otto vs. Docker"
     4  sidebar_current: "vs-other-docker"
     5  description: |-
     6    Comparison between Otto and Docker.
     7  ---
     8  
     9  # Otto vs. Docker
    10  
    11  Docker is an ecosystem of tools including the Docker runtime, Compose,
    12  Machine and Swarm. Each of these tools solves a different problem, but
    13  they are all specific to Docker.
    14  
    15  To develop using Docker, users must either develop on Linux or start a
    16  virtual machine running Linux. Then a `docker-compose.yml` is constructed
    17  with all the containers needed to run the full set of dependencies for your application.
    18  This is used by Docker Compose to manage the lifecycle of development
    19  containers.
    20  
    21  Once ready for deployment, you must build the application, create
    22  a Docker container, and upload it to Docker Hub or another registry.
    23  To build your application you create a `Dockerfile` which contains
    24  the compilation depedencies and emits a binary or compile artifact.
    25  Another `Dockerfile` is used to create a minimal deployment container
    26  with just this artifact, unless you want to deploy the container
    27  that includes all the compilation dependencies.
    28  
    29  Servers are provisioned with Docker Machine, which creates a server
    30  that has the Docker runtime installed. Machine does not have
    31  configuration file to specify all the machines needed, so it should
    32  be invoked by a provisioning script.
    33  
    34  If more than a single server is required, Docker Swarm is used to
    35  cluster the servers together. This allows containers to be scheduled
    36  to the cluster as if it were a single large machine. Docker Swarm
    37  can be configured by Machine during server provisioning.
    38  
    39  Once setup, containers must be provisioned on the cluster. This
    40  can be done with the `docker` CLI pointing at the Swarm cluster.
    41  For applications with dependencies, this should be wrapped in
    42  a deployment script to ensure those are launched along with the
    43  application.
    44  
    45  Otto is a single tool and is much simpler to use. Otto uses an `Appfile`
    46  to describe the application and any upstream dependencies. Otto
    47  uses this same `Appfile` to setup development environments,
    48  building, launch infrastructure, and deployment.
    49  
    50  To create a development environment, `otto dev` is run. This
    51  uses the `Appfile` to setup a virtual machine and downloads
    52  any compilation or upstream dependencies.
    53  
    54  Once ready, you can create the infrastructure for your application
    55  by running `otto infra`. This provisions the servers needed to
    56  run your application. This only needs to be done once to create
    57  the infrastructure.
    58  
    59  To build the application you run `otto build`. This packages
    60  the application to be deployed. This can use Docker, but this
    61  is a detail that developers do not need to worry about. The
    62  `Appfile` already encodes what is needed and no `Dockerfile`
    63  is necessary.
    64  
    65  Lastly, `otto deploy` is used to deploy the application.
    66  This will use the infrastructure setup by `otto infra` and
    67  the build artifacts from `otto build`.
    68  
    69  Otto is designed to be a single tool that manages the workflow
    70  from development to production and requires only the `Appfile`.
    71  It is meant to simplify the complex state of development today,
    72  while using production hardened tools and industry best practices
    73  automatically.