This is a Vagrant plugin that allows it to control and provision Linux Containers as an alternative to the built in VirtualBox provider for Linux hosts.
Features / Limitations
- Provides the same workflow as the Vagrant VirtualBox provider
- Port forwarding via
- Does not support public / private networks
- Assumes you have a
lxcbr0bridge configured on your host similar to Ubuntu's built-in
The plugin is known to work better and pretty much out of the box on Ubuntu 12.04+
hosts and installing the dependencies on it basically means a
apt-get install lxc lxc-templates cgroup-lite redir
apt-get update && apt-get dist-upgrade to upgrade the kernel. For Debian
hosts you'll need to follow the instructions described on the Wiki.
Some manual steps are required to set up a Linode machine prior to using this plugin, please check the wiki for more information. Documentation on how to set things up for other distros are welcome :)
If you are on a Mac or Windows machine, you might want to have a look at this blog post for some ideas on how to set things up or check out this other repo for a set of Vagrant VirtualBox machines ready for vagrant-lxc usage.
vagrant plugin install vagrant-lxc
After installing, add a base box using any name you want, for example:
vagrant box add quantal64 http://bit.ly/vagrant-lxc-quantal64-2013-07-12
Then create a Vagrantfile that looks like the following, changing the box name to the one you've just added:
Vagrant.configure("2") do |config| config.vm.box = "quantal64" end
And finally run
vagrant up --provider=lxc.
If you are using Vagrant 1.2+ you can also set
environmental variable to
lxc in order to avoid typing
If you want, you can modify container configurations from within your Vagrantfile using the provider block:
Vagrant.configure("2") do |config| config.vm.box = "quantal64" config.vm.provider :lxc do |lxc| # Same effect as as 'customize ["modifyvm", :id, "--memory", "1024"]' for VirtualBox lxc.customize 'cgroup.memory.limit_in_bytes', '1024M' end end
vagrant-lxc will then write out
lxc.cgroup.memory.limit_in_bytes='1024M' to the
container config file (usually kept under
prior to starting it.
For other configuration options, please check the lxc.conf manpages.
This plugin requires a lot of
sudoing since user namespaces
are not supported on mainstream kernels. Have a look at the Wiki
to find out how to work around that specially if you are running an OS with sudo
< 1.8.4 (like Ubuntu 12.04) as you might be affected by a bug.
Please refer the wiki.
Problems / ideas?
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request