<commit_before>title=LXC auf Ubuntu-14.04
date=2015-01-31
type=post
tags=LXC
status=published
~~~~~~

LXC
===

Einrichtung von LXC unter Ubuntu-14.04.

Installation
------------

`sudo apt-get install lxc`

Container-Partition /lxc
------------------------

Dieser Teil ist optional. Man kann ihn auch einfach weglassen, dann werden die LXC-Container eben unterhalb von /var angelegt. Das setzt dann natürlich voraus, dass dort noch genügend freier Platz vorhanden ist - etwa 10GB sollten für den Anfang reichen. Prüfen kann man das mit `df -h /var`.

Die nachfolgende Beschreibung geht davon aus, dass das System mit LVM partitioniert ist und dass eine VolumeGroup namens "systemvg" vorhanden ist.

### Partition anlegen

```
sudo lvcreate -n lxclv -L10G systemvg
sudo mkfs.btrfs /dev/systemvg/lxclv
```

### Partition einbinden

```
sudo -s
mkdir /lxc
echo "/dev/systemvg/lxclv /lxc btrfs defaults 0 3" >>/etc/fstab
mount /lxc
mkdir /lxc/lib
mkdir /lxc/cache
rmdir /var/lib/lxc
ln -s /lxc/lib /var/lib/lxc
rm -rf /var/cache/lxc
ln -s /lxc/cache /var/cache/lxc
```

Erstellen von Containern
------------------------

### 12.04, 64bit

64-bit Container können nur erstellt werden, wenn das Basissystem auch ein 64-bit-System ist!

```
$ sudo lxc-create -t ubuntu -n ubuntu1204-64 -B btrfs -- -r precise -a amd64
Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ... 
Installing packages in template: ssh,vim,language-pack-de,language-pack-en
Downloading ubuntu precise minimal ...
I: Retrieving Release 
I: Retrieving Release.gpg 
I: Checking Release signature
I: Valid Release signature (key id 630239CC130E1A7FD81A27B140976EAF437D05B5)
I: Retrieving Packages 
I: Validating Packages 
I: Retrieving Packages 
...
##
# The default user is 'ubuntu' with password '<PASSWORD>'!
# Use the 'sudo' command to run tasks as root in the container.
##

$
```

### 12.04, 32bit

```
sudo lxc-create -t ubuntu -n ubuntu1204-32 -B btrfs -- -r precise -a i386
```

### 14.04, 64bit

```
sudo lxc-create -t ubuntu -n ubuntu1404-64 -B btrfs -- -r trusty -a amd64
```

### 14.04, 32bit

```
sudo lxc-create -t ubuntu -n ubuntu1404-32 -B btrfs -- -r trusty -a i386
```

Arbeit mit Containern
---------------------

* Start: `sudo lxc-start -n ubuntu1406-64`
* Anmelden
** Benutzer: "ubuntu"
** Kennwort: "<PASSWORD>"
* Netzwerk
** IP-Adressen: Aus dem Adressbereich 10.0.3/24
** NAT: Funktioniert - `ping google.com`
** SSH vom Host in den Container: Funktioniert - `ssh ubuntu@10.0.3.77`
* Runterfahren: `sudo poweroff` innerhalb des Containers

Anpassung der Container
-----------------------

### Verwenden des Apt-Cacher-Ng vom Host-System

Erstellen von /etc/apt/apt.conf.d/01proxy:

```
Acquire::http::Proxy "http://10.0.3.1:3142";
```

### Installation von JOE/JMACS

```
sudo apt-get install joe
```

Sichern und Rückspielen von Containern
--------------------------------------

### Sichern

```
cd /lxc
sudo tar -cvjpf /backups/lxc/20121119.tar.bz2 .
```

### Rückspielen

```
cd /lxc
sudo tar -xvjpf /backups/lxc/20121119.tar.bz2
```

Probleme
--------

### Offene Punkte

#### Wie sorgt man dafür, dass ein Container nur über ein Host-Only-Netzwerk erreichbar ist?

### Erledigte Punkte

#### Verwendung des Apt-Cacher-Ng durch einen Container

... geht wie üblich durch /etc/apt/apt.conf.d/01proxy innerhalb des Containers

#### Wie übernimmt man einen Container auf ein anderes System?

... durch Sichern und Rückspielen.

Links
-----

* Ubuntu 12.04 Server Guide: <https://help.ubuntu.com/12.04/serverguide/lxc.html>
<commit_msg>Shutdown from the outside<commit_after>title=LXC auf Ubuntu-14.04
date=2015-01-31
type=post
tags=LXC
status=published
~~~~~~

LXC
===

Einrichtung von LXC unter Ubuntu-14.04.

Installation
------------

`sudo apt-get install lxc`

Container-Partition /lxc
------------------------

Dieser Teil ist optional. Man kann ihn auch einfach weglassen, dann werden die LXC-Container eben unterhalb von /var angelegt. Das setzt dann natürlich voraus, dass dort noch genügend freier Platz vorhanden ist - etwa 10GB sollten für den Anfang reichen. Prüfen kann man das mit `df -h /var`.

Die nachfolgende Beschreibung geht davon aus, dass das System mit LVM partitioniert ist und dass eine VolumeGroup namens "systemvg" vorhanden ist.

### Partition anlegen

```
sudo lvcreate -n lxclv -L10G systemvg
sudo mkfs.btrfs /dev/systemvg/lxclv
```

### Partition einbinden

```
sudo -s
mkdir /lxc
echo "/dev/systemvg/lxclv /lxc btrfs defaults 0 3" >>/etc/fstab
mount /lxc
mkdir /lxc/lib
mkdir /lxc/cache
rmdir /var/lib/lxc
ln -s /lxc/lib /var/lib/lxc
rm -rf /var/cache/lxc
ln -s /lxc/cache /var/cache/lxc
```

Erstellen von Containern
------------------------

### 12.04, 64bit

64-bit Container können nur erstellt werden, wenn das Basissystem auch ein 64-bit-System ist!

```
$ sudo lxc-create -t ubuntu -n ubuntu1204-64 -B btrfs -- -r precise -a amd64
Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ... 
Installing packages in template: ssh,vim,language-pack-de,language-pack-en
Downloading ubuntu precise minimal ...
I: Retrieving Release 
I: Retrieving Release.gpg 
I: Checking Release signature
I: Valid Release signature (key id 630239CC130E1A7FD81A27B140976EAF437D05B5)
I: Retrieving Packages 
I: Validating Packages 
I: Retrieving Packages 
...
##
# The default user is 'ubuntu' with password '<PASSWORD>'!
# Use the 'sudo' command to run tasks as root in the container.
##

$
```

### 12.04, 32bit

```
sudo lxc-create -t ubuntu -n ubuntu1204-32 -B btrfs -- -r precise -a i386
```

### 14.04, 64bit

```
sudo lxc-create -t ubuntu -n ubuntu1404-64 -B btrfs -- -r trusty -a amd64
```

### 14.04, 32bit

```
sudo lxc-create -t ubuntu -n ubuntu1404-32 -B btrfs -- -r trusty -a i386
```

Arbeit mit Containern
---------------------

* Start: `sudo lxc-start -n ubuntu1404-64`
* Anmelden
** Benutzer: "ubuntu"
** Kennwort: "<PASSWORD>"
* Netzwerk
** IP-Adressen: Aus dem Adressbereich 10.0.3/24
** NAT: Funktioniert - `ping google.com`
** SSH vom Host in den Container: Funktioniert - `ssh ubuntu@10.0.3.77`
* Runterfahren
** `sudo poweroff` innerhalb des Containers
** `sudo lxc-stop -n ubuntu1406-64` außerhalb des Containers

Anpassung der Container
-----------------------

### Verwenden des Apt-Cacher-Ng vom Host-System

Erstellen von /etc/apt/apt.conf.d/01proxy:

```
Acquire::http::Proxy "http://10.0.3.1:3142";
```

### Installation von JOE/JMACS

```
sudo apt-get install joe
```

Sichern und Rückspielen von Containern
--------------------------------------

### Sichern

```
cd /lxc
sudo tar -cvjpf /backups/lxc/20121119.tar.bz2 .
```

### Rückspielen

```
cd /lxc
sudo tar -xvjpf /backups/lxc/20121119.tar.bz2
```

Probleme
--------

### Offene Punkte

#### Wie sorgt man dafür, dass ein Container nur über ein Host-Only-Netzwerk erreichbar ist?

### Erledigte Punkte

#### Verwendung des Apt-Cacher-Ng durch einen Container

... geht wie üblich durch /etc/apt/apt.conf.d/01proxy innerhalb des Containers

#### Wie übernimmt man einen Container auf ein anderes System?

... durch Sichern und Rückspielen.

Links
-----

* Ubuntu 12.04 Server Guide: <https://help.ubuntu.com/12.04/serverguide/lxc.html>

{'fraction_non_alphanumeric': 0.16212438853948288, 'fraction_numerical': 0.04835779175401817, 'mean_word_length': 3.0985108820160367, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 13, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1334073', 'n_tokens_mistral': 2954, 'n_tokens_neox': 2643, 'n_words': 794}