Firma Canonical wydanie narzędzi do organizacji pracy z izolowanymi kontenerami , menedżer kontenerów i wirtualny system plików do symulacji w kontenerach /proc, /sys i zwirtualizowanego przedstawienia cgroupfs dla dystrybucji bez wsparcia przestrzeni nazw dla cgroup. Gałąź 4.0 została przypisana do wydań z długoterminowym wsparciem, aktualizacje dla których są wydawane przez 5 lat
LXC to środowisko uruchomieniowe do uruchamiania zarówno systemowych kontenerów, jak i kontenerów dla pojedynczych aplikacji (OCI). LXC zawiera bibliotekę liblxc, zestaw narzędzi (lxc-create, lxc-start, lxc-stop, lxc-ls itd.), szablony do budowy kontenerów oraz zestaw wiązań dla różnych języków programowania. Izolacja jest realizowana za pomocą standardowych mechanizmów jądra Linux. Do izolacji procesów, stosu sieciowego ipc, uts, identyfikatorów użytkowników i punktów montowania wykorzystywany jest mechanizm przestrzeni nazw (namespaces). Do ograniczania zasobów stosuje się cgroups. Do obniżania przywilejów i ograniczania dostępu wykorzystane są możliwości jądra, takie jak profile Apparmor i SELinux, polityki Seccomp, Chroots (pivot_root) oraz capabilities. Kod LXC jest napisany w języku C i jest wydawany na licencji GPLv2.
LXD jest nakładką na LXC, CRIU i QEMU, używaną do centralnego zarządzania kontenerami i maszynami wirtualnymi na jednym lub kilku serwerach. Jeśli LXC to niskopoziomowe narzędzie do manipulacji na poziomie pojedynczych kontenerów, to LXD działa jako proces w tle, przyjmujący żądania przez sieć za pośrednictwem REST API, co pozwala na tworzenie skalowalnych konfiguracji wdrożonych w klastrze kilku serwerów.
Obsługiwane są różne zaplecza pamięci (drzewo katalogów, ZFS, Btrfs, LVM), migawki z poziomem stanu, migracja na żywo działających kontenerów z jednej maszyny na drugą oraz narzędzia do zarządzania repozytorium obrazów. Kod LXD jest napisany w języku Go i jest wydawany na licencji Apache 2.0.
Kluczowe w LXC 4.0:
- W pełni przepisano sterownik do pracy z cgroup. Dodano wsparcie dla zunifikowanej hierarchii cgroup (cgroup2). Dodano funkcjonalność kontrolera freezer, za pomocą którego można wstrzymać działanie w cgroup i tymczasowo uwolnić niektóre zasoby (CPU, wejście/wyjście i potencjalnie nawet pamięć) do wykonania innych zadań.
- Zrealizowano infrastrukturę do przechwytywania wywołań systemowych;
- Dodano wsparcie dla podsystemu jądra «pidfd», przeznaczonego do obsługi sytuacji ponownego użycia PID (pidfd jest powiązany z konkretnym procesem i nie zmienia się, podczas gdy PID może być przypisany do innego procesu po zakończeniu bieżącego procesu związanego z tym PID);
- Ulepszono tworzenie i usuwanie urządzeń sieciowych oraz ich przenoszenie między przestrzeniami nazw podsystemu sieciowego;
- Zrealizowano możliwość przenoszenia bezprzewodowych urządzeń sieciowych (nl80211) do kontenerów.
Kluczowe w LXD 4.0:
- Dodano wsparcie dla uruchamiania nie tylko kontenerów, ale także maszyn wirtualnych;
- Dla segmentacji serwerów LXD zaproponowano koncepcję projektów, upraszczających zarządzanie grupami kontenerów i maszyn wirtualnych. Każdy projekt może obejmować swój zestaw kontenerów, maszyn wirtualnych, obrazów, profili i przestrzeni magazynowych. W odniesieniu do projektów można ustawiać własne ograniczenia i zmieniać konfiguracje;
- Dodano wsparcie dla przechwytywania wywołań systemowych dla kontenerów;
- Zrealizowano możliwość tworzenia kopii zapasowych środowisk i przywracania ich;
- Zapewniono zautomatyzowane tworzenie migawek środowisk i przestrzeni magazynowych z możliwością ustalenia czasu istnienia migawki;
- Dodano API do monitorowania stanu sieci (lxc network info);
- Dodano wsparcie dla , wirtualny system plików do mapowania punktów montowania z przestrzeniami nazw identyfikatorów użytkowników (user namespace);
- Proponowane są nowe typy adapterów sieciowych «ipvlan» i «routed»;
- Dodano backend do korzystania z magazynów opartych na CephFS;
- Dla klastrów zrealizowano wsparcie dla replikacji obrazów oraz konfiguracji wieloarchitektonicznych;
- Dodano możliwość zarządzania dostępem na podstawie ról (RBAC);
- Dodano wsparcie dla CGroup2;
- Dodano możliwość konfiguracji adresu MAC oraz określenia adresu źródłowego dla NAT;
- Dodano API do zarządzania powiązaniami w DHCP (leases);
- Dodano wsparcie dla Nftables.
Źródło: opennet.ru
