Docker

From IndieWeb
Jump to: navigation, search


Docker provides a way to package an application into a "container" that includes all the dependencies it needs to run. Its primary benefit is enabling much simpler deployment of complex software packages.

It can be used as an open platform to manage which processes should run on your server (for instance Apache, MySQL, etcetera). It lets you use Linux containers (LXC) to run each process in a sandboxed environment, and simple human-readable Dockerfiles to script the install instructions for these container.

Issues

  • Still quite young and a bit of a moving target.
  • Very hard to find documentation that's not too jargon as most people working with Docker right now are deep into devops. (Docker has fantastic potential to enable componentized software deployments for "normal people", too.)
  • No desktop GUIs available for managing docker containers.
    • There are a bunch of web services, but I do not want to rely on someone else’s (i.e. not my webhost) web service to manage my website, reader, services etc. --Barnaby Walters 09:32, 23 February 2015 (PST)
    • There is the Kitematic GUI for managing local docker containers. -- Pelle Wessman 20:07, 22 July 2015 (CET)
  • Unclear exactly how compartmentalized applications should be made — everything in a single container for ease? Or database in one, filesystem in another, application in another, all strung together?
    • I believe the idea to have each container just do a single thing has emerged as the best practice. So one for the database, one for the application etc. -- Pelle Wessman 20:07, 22 July 2015 (CET)

Definitions

LXC (LinuX Containers) is a virtualization method at the operating system–level. It allows you to isolate running code as if it was inside a virtual machine but without the requirement of having special purpose virtual machine software like VMWare.

Indieweb Examples

Indieweb Containers

Places to Host Docker Containers

Tools

  • Docker Compose, previously called "Fig", can be used to easily bootstrap a local environment with database containers etc that should be linked to the application container. Reduces it all to a single "docker-compose up" command.

See Also

  • IndieBox
  • Sandstorm.io
  • Criticism: more trouble than it’s worth, slows down dev iteration: https://twitter.com/searls/status/1131924574361268224
    • "Unpopular(?) opinion: using docker for development environments is more trouble than it's worth. It provides yet another failure vector, any problems are impenetrable to most developers, and it slows down feedback loops." @searls May 24, 2019
    • read the replies to ^^^ for many reasonable "it depends" counterpoints