Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so, dass sie sich nur auf ein Problem konzentriert, indem Sie diesen Beitrag bearbeiten.
Vor 5 Jahren geschlossen.
Verbessern Sie diese Frage
Während Sie mehr über Container recherchieren und lernen, scheint Docker eine großartige Dokumentation und Anwendungsbeispiele mit Schritt-für-Schritt-Anleitungen zu haben. Auf der anderen Seite hat LXD nur eine einfache Anleitung zum Einstieg. Welche Quellen da draußen hätten eine gute Dokumentation zu LXD, die ich mir ansehen könnte?
Akzeptierte Antwort:
LXC vs. LXD
Blog-Beiträge sind nett und informativ und gut zu lesen, um loszulegen, aber sie sind keine gute Dokumentation, wenn Sie einmal angefangen haben. Wenn Sie wie ich sind, ist Ihnen der Unterschied zwischen Docker und LXC/LXD vielleicht ziemlich klar, nachdem Sie nur ein paar häufig gefundene Blogbeiträge dazu gelesen haben. Aber der Unterschied zwischen dem älteren LXC-Projekt und dem neuen LXD-Projekt war nicht gleich Alles klar für mich, und die meisten Seiten, die ich gefunden habe, leisten einfach keine gute Arbeit, um es auf eine Weise zu erklären, die ich verstehen könnte. Meist versuchen sie, die Verwechslung zwischen einem Anwendungscontainer (Docker) und einem Betriebssystemcontainer (LXC/LXD) zu beseitigen. Dann habe ich diesen Blogbeitrag gefunden:Wo passt lxd hin?
Wie Sie vielleicht inzwischen wissen, verwenden alle diese Tools (Docker/LXC/LXD) gemeinsame Kernel-Funktionen wie Namespaces und Cgroups, es ist nur eine Frage, wie Userspace entscheidet, sie zu verwenden. Eine Zusammenfassung des obigen Beitrags konzentrierte sich auf die Entwicklung von LXC vs. LXD, basierend auf meinem Verständnis:
- LXC wurde ursprünglich erstellt, um die neuen Kernel-Features zu testen; als solches war es ein Mischmasch aus Shell-Skripten und C-Programmen (die heute noch über die „alten“ LXC-Befehlszeilentools verwendet werden).
- Dann wurde dies in eine Bibliothek umgestaltet. Vorhandene LXC-Userspace-Befehlszeilentools verwenden jetzt diese Bibliothek.
- LXD ist eine grundlegende Art der Schnittstelle mit dieser Bibliothek, die nicht durch Abwärtskompatibilität mit den alten LXC-Befehlszeilentools belastet ist. Daher ist es einfacher zu verwenden und leistungsfähiger.
Falls irgendjemand (zB ein Betreuer) oben einige Fehler sieht, kann er meine Antwort gerne korrigieren. 🙂
Einige Anmerkungen zu libvirt-lxc
Auch für den Fall, dass Sie libvirt-lxc
in Betracht ziehen (zB wenn Sie bereits libvirt
verwenden mit KVM):
- Red Hat hat dies als veraltet markiert:https://access.redhat.com/articles/1365153
- Upstream sagt, dass sie noch daran arbeiten werden:https://www.redhat.com/archives/libvirt-users/2015-August/msg00026.html
- Obwohl
libvirt-lxc
hatlxc
im Namen, es verwendet nicht wirklichlxc
und verwendet stattdessen direkt die Kernelfunktionen. Verwechseln Sie dieselibvirt
also nicht Treiber mitlxc
trotz Namensverwirrung. Referenz:http://libvirt.org/drvlxc.html (Beachten Sie, dass ich denke, dass proxmox das tut Verwenden Sielxc
richtig, aber nicht das neuerelxd
Werkzeuge). - Stéphane Graber schlägt vor,
libvirt
zu verwenden mit Containern ist eine schlechte Passform, und das, obwohl jemand durchaus einelibvirt-lxd
schreiben könnte , er denkt, dass es auch eine schlechte Passform ist. Zusammengefasst:libvirt
wurde entwickelt, um VMs zu verwalten, und Container sind keine VMs, sodass die Dinge chaotisch werden und Sie nur einen gemeinsamen Nenner von Funktionen unterstützen. Referenz:https://lists.linuxcontainers.org/pipermail/lxc-devel/2014-November/010820.html - Um das Vorherige zu verstärken, ist es nicht so einfach, neue Container mit
libvirt-lxc
zu erstellen . Beispielsweise müssen Sie ihm einen Pfad zu einem VORHANDENEN rootfs für einen neuen Container geben, den Sie erstellen möchten, und es gibt keine Unterstützung inlibvirt-lxc
um das aufzudrehen. Sie müssen also Dinge wie die Verwendung externer Tools wielxc-create
tun um einen neuen Container aus einer Vorlage zu erstellen, und erstellen Sie dann einen neuenlibvirt-lxc
Container, der das gerade erstellte vorhandene Verzeichnis verwendet, was mich dann fragen lässt:„Warum sich mitlibvirt-lxc
aufhalten anstatt nurlxd
zu verwenden direkt?“
LXD-Dokumentation
Zurück zu Ihrer Frage:Ich habe versucht, alle Referenzdokumentationen zu LXD zusammenzustellen, die ich finden konnte. Hier gibt es eine nette Dokumentation:
https://github.com/lxc/lxd/tree/master/doc
Insbesondere:
configuration.md
hat eine schöne Referenzliste möglicher Konfigurationsoptionen.imagehandling.md
spricht darüber, wie Betriebssystem-Images lokal zwischengespeichert werden.lxd-ssl-authentication.md
erläutert die REST-API und wie sie sowohl über einen lokalen UNIX-Socket als auch optional über HTTPS verfügbar gemacht wird und wie dies gesichert wird.storage-backends.md
bespricht die Einschränkungen und die Konfiguration jedes Speicher-Backends.userns-idmap.md
lxd verwendet standardmäßig unprivilegierte Container, was bedeutet, dass die Container-UID/GID einer Host-UID/GID zugeordnet werden muss; das bespricht das.- Ein Großteil der verbleibenden Dokumentation ist nicht so kritisch zu lesen oder richtet sich eher an Entwickler.
Die obigen Links stammen vom Hauptzweig von lxd
Upstream, also sollten Sie das doc
überprüfen Verzeichnis für die Quellen des Pakets, das Sie tatsächlich installiert haben, damit Sie nicht versehentlich eine neue Funktion verwenden, die Sie noch nicht installiert haben.
Es gibt nicht wirklich viele Manpages, aber hier ist, was ich in lxd
gefunden habe und lxd-client
Pakete:
LXC(1)
– Client-Programm zur Kommunikation mit dem Server-Daemon. Aktuell (14.05.2016) eher nutzlos und wenig aussagekräftig. Hoffentlich kann in Zukunft eine Reihe von Manpages für dieses Tool erstellt werden, ähnlich wiebtrfs
Hilfeseiten.LXD(1)
– Server-Daemon-Befehlszeile.
Natürlich gibt es auch die Server-Guide-Seite:https://help.ubuntu.com/lts/serverguide/lxd.html
Denken Sie schließlich daran, dass lxd auf der lxc-Bibliothek basiert (aber nicht auf den alten lxc-Befehlszeilentools). Das bedeutet, dass die lxc-Konfiguration weiterhin direkt durchgeführt werden kann, z. mit raw.lxc
Konfigurationsoption in lxd. Daher ist ein Hinweis auf die zugrunde liegende LXC-Konfiguration nützlich, aber denken Sie daran, dass dies nach Möglichkeit vermieden werden sollte, um einen Konflikt mit LXD zu vermeiden (z. B. wenn Sie dasselbe Konfigurationselement in LXD und LXC festlegen). Sie können die Manpages durchsuchen, um diese bei Bedarf zu finden:https://linuxcontainers.org/lxc/manpages/