Page MenuHomePhabricator

Investigate Linux containers
Closed, ResolvedPublic

Description

Docker (http://www.docker.io/) is purported to work well with Puppet and Vagrant. The Docker folk recommend Vagrant for running Docker on non-Linux hosts, and they're apparently working on a docker Vagrant provider. (A Vagrant 'provider' is a piece of middleware that tells Vagrant how to talk with a virtualization platform, be it VirtualBox or AWS).

It'd be nice if the Puppet codebase for MediaWiki-Vagrant provisioned a container. For people who use VirtualBox, the additional isolation won't be beneficial, but it won't cost them much either, since containers are reputed to be very efficient, by dint of some low-level support for containers in the Linux kernel. Containers provide quite a lot of benefit for use-cases that need isolation but not virtualization, which is any environment that is already running Linux, like Jenkins or Labs.

Containers are also increasingly popular for PaaS deployments, so there's at least the possibility that the work will pay off in modernizing the process of deploying MediaWiki to cloud platforms.


Version: unspecified
Severity: enhancement

Details

Reference
bz51556

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 2:10 AM
bzimport set Reference to bz51556.

If there's no clear benefit to it, we should think about whether it makes sense to do by default. The goal of MediaWiki-Vagrant is to make a dev environment that (where possible) roughly resembles production. It should go without saying that we generally want this to perform as well as possible for the developer.

[mass-moving from Tools>MediaWiki-Vagrant to separate product. See bug 54041. Filter bugmail on this comment.]

Change 157633 had a related patch set uploaded by BryanDavis:
Add support for Docker

https://gerrit.wikimedia.org/r/157633

Change 157633 merged by jenkins-bot:
Add support for Docker

https://gerrit.wikimedia.org/r/157633

We now have code to support the Docker provider in Vagrant.

We will not be making lxc/Docker required at this point. The folks that manage the Docker project seem to be much more interested in the single executable per container model. It should be possible to provision an entire MediaWiki stack (apache, database, cache, jobrunner) using multiple Docker containers in the way that Docker would like, but it would be a separate project from MediaWiki-Vagrant.

We now have code to support the Docker provider in Vagrant.

The sketchy Docker support in MediaWiki-Vagrant has now been replaced with LXC via the vagrant-lxc plugin. This seems to be a much better integration than the Docker one for our use case of provisioning a full stack of wiki and related components in a single container. On my test instance in Labs I can do a full vagrant destroy; vagrant up cycle to provision a basic wiki in a little less than 2 minutes. See T90892: Establish a working lightweight (LXC/Docker) MW-Vagrant provider for further updates.