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.
- 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)
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.
- User:danger.computer was using Gitlab in a Docker instance until 2014-09-15, citing inexplicable breakage and maintenance cost as a reason for discontinuing http://danger.computer/2014/09/15/ditching-docker-gitlab
- Jacky Alciné uses it via Dokku to run _everything_ since it make reproducibility very simple.
Places to Host Docker Containers
- Docker Cloud (formerly dotCloud)
- Kubernetes (Google, Microsoft, IBM, Red Hat, CoreOS/Tectonic)
- Google Compute Engine
- Digital Ocean Docker droplet
- 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.
- 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
- "Plus, of course" @kjhealy April 13, 2022