Skip to content

alyu/lxctools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

lxctools

Simple helper scripts for managing lxc. Only tested with Ubuntu 12.04 LTS.

As default (for my dev env) each container will get its own separate mounted /opt (under host's /opt/lxc/<container name>) and /mnt/dbext4 (/mnt/dbext4/lxc/<container name>) and /mnt/dbxfs (/mnt/dbxfs/lxc/<container name>). Containers will be named as 'name-seqno'. Paths/defaults can be changed by editing etc/config. There are no shared disks between the containers.

Install:

$ export PATH=(path to lxctools/bin):$PATH

Create 3 containers for web use

$ create-lxc 1 3 web
start=1, stop=3, template=ubuntu, name=web

No config file specified, using the default config
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ...
Copy /var/cache/lxc/precise/rootfs-amd64 to /var/lib/lxc/web-1/rootfs ...
Copying rootfs to /var/lib/lxc/web-1/rootfs ...

##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##

'ubuntu' template installed
'web-1' created
Created container web-1
Disabled sudo password prompt
...
Mount host's devices (see etc/config) ? [Y/n]: y
/opt/lxc/web-1  /var/lib/lxc/web-1/rootfs/opt   none    bind    0       0
/mnt/dbext4/lxc/web-1 /var/lib/lxc/web-1/rootfs/mnt/dbext4      none    bind    0       0
/mnt/dbxfs/lxc/web-1 /var/lib/lxc/web-1/rootfs/mnt/dbxfs        none    bind    0       0
fstab updated for web-1
...
Use static IP ranges? 10.0.3.10, 10.0.3.20 ... [Y/n]: y
start=1, stop=3, name=web, incr=10
Start from 10.0.3.N [0 + 10]:
lxc.network.ipv4 = 10.0.3.10
lxc.network.ipv4 = 10.0.3.20
lxc.network.ipv4 = 10.0.3.30
Set pub ssh key [Y/n]: y
...
Added pub ssh key web-3

Start 3 containers, web-1, web-2 and web-3

$ node-x 1 3 web
start=1, stop=3, name=web
Starting container web-1
Starting container web-2
Starting container web-3

Start only web container 2

$ node-x 2 web
start=2, stop=2, name=web
Starting container web-2

Logon to web container 2

$ console-x 2 web
or
$ ssh [email protected]

Kill web container 3

$ kill-x 3 web
start=3, stop=3, name=web
Killing container web-3

Shutdown all 3 web containers nicely

$ shutdown-x 1 3 web
start=1, stop=3, name=web, -w
Shutdown container web-1
Container web-1 has shut down
Shutdown container web-2
Container web-2 has shut down
Shutdown container web-3
Container web-3 has shut down

Destroy all 3 web containers. Purges /var/lib/lxc/<container name>, /opt/lxc/<container name> and /mnt/{dbext4,dbxfs}/lxc/<container name>

$ destroy-x 1 3 web
start=1, stop=3, name=web
Destroying container web-1
Destroying container web-2
Destroying container web-3

Limit cpu and memory allocations (cgroup)

$ cgroup-x start 3 name web subsystem cpuset.cpus
start=3, stop=3, name=web, subsystem=cpuset.cpus, value=
Getting cpuset.cpus for web-3
0-11

$ cgroup-x start 3 name web subsystem cpuset.cpus value 4
start=3, stop=3, name=web, subsystem=cpuset.cpus, value=4
Setting cpuset.cpus for web-3

$ cgroup-x start 3 name web subsystem cpuset.cpus
start=3, stop=3, name=web, subsystem=cpuset.cpus, value=
Getting cpuset.cpus for web-3
4

$ cgroup-x start 3 name web subsystem memory.limit_in_bytes
start=3, stop=3, name=web, subsystem=memory.limit_in_bytes, value=
Getting memory.limit_in_bytes for web-3
9223372036854775807

About

Simple helper scripts for handling lxc on Ubuntu

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published