ruby bindings for liblxc
C Ruby
Latest commit 5039b49 Jan 4, 2016 @andrenth andrenth Version 1.2.1
Permalink
Failed to load latest commit information.
debian Version 1.2.1 Jan 4, 2016
ext/lxc Avoid rb_std{in,out,err} name clash with rubinius Jan 4, 2016
lib Version 1.2.1 Jan 4, 2016
test
.gitignore add bundler support Dec 16, 2013
.travis.yml Update Travis configuration Feb 23, 2015
Gemfile add bundler support Dec 16, 2013
LICENSE Standardizing project structure Dec 6, 2013
README.md Update README.md Mar 6, 2015
Rakefile Add (still incomplete) RDoc. Dec 27, 2013
ruby-lxc.gemspec Adding rdoc dependencies for ruby 1.8 Jun 9, 2014

README.md

Ruby-LXC

Build Status

Introduction

Ruby-LXC is a Ruby binding for liblxc. It allows the creation and management of Linux Containers from Ruby scripts.

Build and installation

Assuming a current installation of LXC is available, to install Ruby-LXC simply run the commands below

sudo apt-get install ruby-dev lxc-dev

bundle install
bundle exec rake compile
bundle exec rake gem
gem install pkg/ruby-lxc-1.2.0.gem

or just add this to your Gemfile

gem "ruby-lxc", github: "lxc/ruby-lxc", require: "lxc"

Usage

  • Container lifecycle management (create, start, stop and destroy containers)
require 'lxc'
c = LXC::Container.new('foo')
c.create('ubuntu') # create a container named foo with ubuntu template
c.start
# attach to a running container
c.attach do
  LXC.run_command('ifconfig eth0')
end
c.stop
c.destroy
  • Container inspection
c.name
c.config_path
c.config_item('lxc.cap.drop')
c.cgroup_item('memory.limit_in_bytes')
c.init_pid
c.interfaces
c.ip_addresses
c.state
  • Additional state changing operations (freezing, unfreezing and cloning containers)
c.freeze
c.unfreeze
c.reboot
c.shutdown
  • Clone a container
# clone foo into bar. Parent container has to be frozen or stopped.
clone = c.clone('bar')
  • Wait for a state change
# wait until container goes to STOPPED state, else timeout after 10 seconds
c.wait(:stopped, 10)

Check the provided rdoc documentation for a full list of methods. You can generate it running

rake rdoc