.github/workflows | ||
debian | ||
ext/lxc | ||
lib | ||
test | ||
.gitignore | ||
.travis.yml | ||
Gemfile | ||
LICENSE | ||
Rakefile | ||
README.md | ||
ruby-lxc.gemspec |
Ruby-LXC
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