LXC LXD Commands (v2.x)

LXC LXD Commands (v2.x)

LXC & LXD: Befehle & Anwendungsbeispiele

Navigation

LXD

LXD Installation und Konfiguration überprüfen:

lxc info
lxc config show

General

Alle lokalen Containers auflisten:

lxc list

Der Befehl lxc list kann mit verschiedenen Filtern umgehen.
Container mit spezifischen Namen auflisten (Regex ist auch erlaubt):

lxc list Ghost
+-----------+---------+---------------------+------+------------+----------------+
|   NAME    | STATUS  |        IPV4         | IPV6 |    TYP     | SCHNAPPSCHÜSSE |
+-----------+---------+---------------------+------+------------+----------------+
| Ghost     | RUNNING | 192.168.XX.XX (eth0) |      | PERSISTENT | 1              |
+-----------+---------+---------------------+------+------------+----------------+
| Ghost-old | STOPPED |                     |      | PERSISTENT | 6              |
+-----------+---------+---------------------+------+------------+----------------+

Autostart Container auflisten:

 lxc list "boot.autostart=true"

Privilegierte Container auflisten:

lxc list "security.privileged=true"

Remotes

Der default Remote ist local: und muss somit nicht angegeben werden. Der default Remote kann aber auch geändert werden mit lxc remote set-default <remote>

+-----------------+------------------------------------------+---------------+--------+--------+
| local (Vorgabe) | unix://                                  | lxd           | NEIN   | JA     |
+-----------------+------------------------------------------+---------------+--------+--------+ 

Alle Remotes auflisten:

lxc remote list
+-----------------+------------------------------------------+---------------+--------+--------+
|      NAME       |                 ADRESSE                  |   PROTOCOL    | PUBLIC | STATIC |
+-----------------+------------------------------------------+---------------+--------+--------+
| images          | https://images.linuxcontainers.org       | simplestreams | JA     | NEIN   |
+-----------------+------------------------------------------+---------------+--------+--------+
| local (Vorgabe) | unix://                                  | lxd           | NEIN   | JA     |
+-----------------+------------------------------------------+---------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams | JA     | JA     |
+-----------------+------------------------------------------+---------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams | JA     | JA     |
+-----------------+------------------------------------------+---------------+--------+--------+

Hinzufügen eines neuen Remotes:

lxc remote add [<remote>] <IP|FQDN|URL>

Entfernen eines Remotes:

lxc remote remove <remote>

Default Remote ändern:

lxc remote set-default ubuntu

Profiles

Profile auslisten:

lxc profile list

"default" Profil anschauen:

lxc profile show default

Profil löschen:

lxc profile delete <profile>

Beispiel: Mit Konfigurationsdatei config.yml ein neues lxc profile erstellen.

Es ist nicht möglich "direkt" ein neues profile zu erstellen mit einer Konfigurationsdatei. Nur lxc profile edit <profile> liest von STDIN. Es muss zuerst ein leeres profile erstellt werden.

Leeres profile erstellen:

> lxc profile create myprofile
Profile myprofile created
> lxc profile show myprofile
config: {}
description: ""
devices: {}
name: myprofile
used_by: []

Beispiel config.yml Inhalt:

name: myprofile
config:
  limits.cpu: "2"
  limits.memory: 2GB
description: "My LXD profile description"
devices:
  eth0:
    nictype: bridged
    parent: br0
    type: nic
  root:
    path: /
    pool: lxd_pool
    size: 5GB
    type: disk

Profile "myprofile" konfigurieren mit config.yml

cat config.yml | lxc profile edit myprofile

Profile überprüfen:

> lxc profile show myprofile
config:
  limits.cpu: "2"
  limits.memory: 2GB
description: My LXD profile description
devices:
  eth0:
    nictype: bridged
    parent: br0
    type: nic
  root:
    path: /
    pool: lxd_pool
    size: 5GB
    type: disk
name: myprofile
used_by: []

Images

Alle lokalen images auflisten:

lxc image list

Image von einem Remote nach lokal kopieren:

> lxc image copy ubuntu:16.04 local: --alias myX
Image copied successfully!

Images können mehrere Aliasse besitzen. Ein Beispiel mit dem ALIAS Eintrag von myX (1 more) beim auflisten der lokalen Images:

+--------------+---------------+--------+---------------------------------------------+--------+----------+------------------------------+
|    ALIAS     | FINGERABDRUCK | PUBLIC |                BESCHREIBUNG                 |  ARCH  |  GRÖßE   |        HOCHLADEDATUM         |
+--------------+---------------+--------+---------------------------------------------+--------+----------+------------------------------+
| myX (1 more) | 03c2fa6716b5  | Nein   | ubuntu 16.04 LTS amd64 (release) (20170919) | x86_64 | 156.13MB | Sep 21, 2017 at 5:20am (UTC) |
+--------------+---------------+--------+---------------------------------------------+--------+----------+------------------------------+
...

Alias auflisten

lxc image alias list

Alias auflisten für remotes

lxc image alias list ubuntu:

Containers

Init

Container erstellen ohne diesen zu starten.
Gleicher Befehl wie "lxc launch" mit identischen Optionen. Einziger Unterschied: Container wird nicht gestartet.

lxc init ubuntu:16.04 u1

Launch

Neuen Container erstellen und starten.
Gleicher Befehl wie "lxc init" mit identischen Optionen. Einziger Unterschied: Container wird gestartet.

lxc launch ubuntu:16.04 con01

Restart

Container neustarten.

lxc restart con01

Examples

Befehle auf allen "laufenden" Containern ausführen mit bash.

Ein Beispiel mit apt update (dieser Befehl funtioniert nur wenn auf den Zielsystemen apt vorhanden ist):

for ct in $(lxc list -c ns --format csv | grep -i running); do \
  ct=${ct/,RUNNING/}; \
  echo "update: $ct"; \
  lxc exec ${ct} -- apt update; \
done

Sonstiges

  • Permanentes ändern des Standard Editors für die lxc <command> edit <stuff> Befehle:
    update-alternatives --config editor
  • Temporäres ändern des Standard Editors für die aktuelle shell:
    export EDITOR=vim

Interessante Links

Hinweis

Die Seite ist noch nicht vollständig und wird von Zeit zu Zeit aktualisiert. Falls ihr etwas beitragen möchtet, kontaktiert mich via Twitter.
Für die hier dargebotenen Informationen und Anleitungen besteht kein Anspruch auf Vollständigkeit, Aktualität und Richtigkeit