LXD ist ein neuer Hypervisor zur Verwaltung von LXC Containern. Basierend auf den früheren LXC-Tools fügt LXD eine Abstraktionsschicht ein, mit der über mehrere LXD-Hosts hinweg Container verwaltet werden können.[1] Der folgende Wiki-Artikel stellt grundlegende Befehle vor, mit dem Container verwaltet werden. Als Distribution wird bei den Bespielen Ubuntu 16.04 verwendet, LXD kommt dabei direkt aus den Ubuntu Repos.
$ lxc remote list +-----------------+------------------------------------------+---------------+--------+--------+ | NAME | URL | PROTOCOL | PUBLIC | STATIC | +-----------------+------------------------------------------+---------------+--------+--------+ | images | https://images.linuxcontainers.org | lxd | YES | NO | +-----------------+------------------------------------------+---------------+--------+--------+ | local (default) | unix:// | lxd | NO | YES | +-----------------+------------------------------------------+---------------+--------+--------+ | lxd2 | https://192.168.56.103:8090 | lxd | NO | NO | +-----------------+------------------------------------------+---------------+--------+--------+ | ubuntu | https://cloud-images.ubuntu.com/releases | simplestreams | YES | YES | +-----------------+------------------------------------------+---------------+--------+--------+ | ubuntu-daily | https://cloud-images.ubuntu.com/daily | simplestreams | YES | YES | +-----------------+------------------------------------------+---------------+--------+--------+
$ lxc image list ubuntu:
$ lxc image copy ubuntu:14.04 local: --alias trusty Image copied successfully!
$ lxc remote add lxd2 192.168.56.103:8090 Certificate fingerprint: b253acc45147d6eb9ad0e862c79b7e8e9d9efb7ce1b81d68cb7a9661bc3950c1 ok (y/n)? y Admin password for lxd2: Client certificate stored at server: lxd2
$ lxc init trusty container1 Creating container1
$ time lxc launch trusty container1 Creating container1 Starting container1 real 0m6.637s
$ lxc exec container1 -- /bin/bash
$ lxc list +------------+---------+-------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------------+---------+-------------------+------+------------+-----------+ | container0 | RUNNING | 10.0.3.227 (eth0) | | PERSISTENT | 0 | +------------+---------+-------------------+------+------------+-----------+ | container1 | RUNNING | 10.0.3.10 (eth0) | | PERSISTENT | 0 | +------------+---------+-------------------+------+------------+-----------+
$ lxc list lxd2: +--------+---------+------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +--------+---------+------+------+------------+-----------+ | trusty | STOPPED | | | PERSISTENT | 1 | +--------+---------+------+------+------------+-----------+
$ lxc config set container1 limits.memory 64MB
$ lxc exec container1 -- /bin/bash
root@container1:~# free -m
total used free shared buffers cached
Mem: 64 18 45 1 0 10
-/+ buffers/cache: 7 56
Swap: 508 1 507
$ lxc snapshot trusty $ lxc list +--------+---------+-------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +--------+---------+-------------------+------+------------+-----------+ | trusty | RUNNING | 10.0.3.170 (eth0) | | PERSISTENT | 1 | +--------+---------+-------------------+------+------------+-----------+
$ lxc restore trusty snap0
$ lxc profile list default docker
$ lxc profile show default
name: default
config: {}
description: ""
devices:
eth0:
name: eth0
nictype: bridged
parent: lxcbr0
type: nic
$ lxc profile apply container0 default Profile default applied to container0
#!/usr/bin/env python
import os.path
import requests
conf_dir = os.path.expanduser('~/.config/lxc')
crt = os.path.join(conf_dir, 'client.crt')
key = os.path.join(conf_dir, 'client.key')
print(requests.get('https://192.168.56.105:8090/1.0/containers', verify=False, cert=(crt, key)).text)
$ lxc config trust add client.crt
$ python -W ignore lxd.py | jq
{
"type": "sync",
"status": "Success",
"status_code": 200,
"metadata": [
"/1.0/containers/container0",
"/1.0/containers/container1"
]
}
$ sudo apt-get install dnsmasq $ sudo vi /etc/default/lxc-net LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf LXC_DOMAIN="lxc" $ echo 'server=/lxc/10.0.3.1' | sudo tee -a /etc/dnsmasq.d/lxc server=/lxc/10.0.3.1 $ sudo vi /etc/lxc/dnsmasq.conf dhcp-host=container0,10.0.3.100 dhcp-host=container1,10.0.3.101 $ sudo service lxc-net restart $ sudo service dnsmasq restart $ sudo killall -s SIGHUP dnsmasq
|
Autor: Georg Schönberger Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.
|