Co to jest cgroupfs i jak jest używany z Dockerem?

16

W dokumentacji Dockera znajduje się omówienie opcji dla natywnego programu wykonawczego ( https://docs.docker.com/engine/reference/commandline/daemon/ ). Dokumentacja mówi

Opcja native.cgroupdriver określa zarządzanie grupami kontenerów. Możesz określić cgroupfs lub systemd. Jeśli podasz systemd i nie jest on dostępny, system użyje cgroupfs. Domyślnie, jeśli nie określono żadnej opcji, program uruchamiający najpierw próbuje systemd i wraca do cgroupfs. Ten przykład ustawia program uruchamiający na cgroupfs:

Moje pytanie brzmi: co to jest cgroupfsi jak się ma systemdw tym przypadku? Googling po informacje na temat cgroupfsdoprowadzenia do tweeta :

--exec-opt native.cgroupdriver = cgroupfs FTW. poważnie @docker, porzuć wsparcie dla grup zarządzanych przez systemd, to katastrofa

Mam jednak nadzieję, że ktoś może podać więcej szczegółów na temat tego, co to właściwie robi, niż powiedzieć, że należy użyć ustawienia innego niż domyślne.

Gabriel Southern
źródło
Zdajesz sobie sprawę, że wszystko to ma związek z alokacją zasobów systemowych (CPU) do kontenera, prawda? systemd ma wbudowaną integrację cgroup. Cgroupfs to widok systemu plików interfejsu cgroup jądra. Jeśli tego właśnie szukasz, odpowiem na to pytanie. Ale jeśli już to wiesz, musiałbym przekopać kod.
Otheus
@Otheus Nie postawiłem nagrody za to pytanie, więc nie jestem pewien, czym zainteresowała się ta osoba. Najważniejsze, co zmotywowało mnie do zadania pytania, to chęć zrozumienia, dlaczego ktoś polecił skorzystanie z tej opcji --exec-opt native.cgroupdriver=cgroupfs. Podejrzewam jednak, że jeśli napisałeś odpowiedź wyjaśniającą ustawienie, które jest łatwiejsze dla początkującego, niż to, co znajduje się w dokumentacji Dockera, otrzymasz kilka pozytywnych opinii i może być pomocne dla osób, które znajdą pytanie od Google również w przyszłości.
Gabriel Southern

Odpowiedzi:

1

Jak widzę z komentarza w źródłach w: vendor/src/github.com/opencontainers/runc/libcontainer/factory_linux.go

// Cgroupfs is an options func to configure a LinuxFactory to return
// containers that use the native cgroups filesystem implementation to
// create and manage cgroups.

cgroupfswydają się być własną libcontainerimplementacją docker ( ), która konfiguruje kontenery cgroupszapisujące bezpośrednio do plików cgroups-file-system(np. zamontowane /sys/fs/cgroup/).

Snorch
źródło