Apa itu cgroupfs dan bagaimana menggunakannya dengan Docker?

16

Dalam dokumentasi Docker ada diskusi tentang opsi untuk pengguna asli ( https://docs.docker.com/engine/reference/commandline/daemon/ ). Dokumentasi mengatakan

Opsi native.cgroupdriver menentukan manajemen cgroup penampung. Anda dapat menentukan cgroupfs atau systemd. Jika Anda menentukan systemd dan itu tidak tersedia, sistem menggunakan cgroupfs. Secara default, jika tidak ada opsi yang ditentukan, terlebih dahulu eksekutif akan mencoba systemd dan kembali ke cgroupfs. Contoh ini menetapkan execdriver ke cgroupfs:

Pertanyaan saya adalah apa cgroupfsdan bagaimana perbandingannya systemddalam kasus ini? Googling untuk informasi tentang cgroupfsmenyebabkan tweet :

--exec-opt native.cgroupdriver = cgroupfs FTW. serius @ dok, jatuhkan dukungan untuk cgroup yang dikelola oleh systemd, ini bencana

Tapi saya berharap seseorang dapat memberikan rincian lebih lanjut tentang apa ini sebenarnya daripada hanya mengatakan menggunakan pengaturan yang berbeda dari standar.

Gabriel Southern
sumber
Anda menyadari ini semua ada hubungannya dengan mengalokasikan sumber daya sistem (CPU) ke sebuah wadah, kan? systemd memiliki integrasi cgroup. Cgroupfs adalah tampilan sistem file dari antarmuka cgroup kernel. Jika ini yang Anda cari, saya akan menjawabnya. Tetapi jika Anda sudah tahu ini, saya harus menggali melalui kode.
Otheus
@Otheus Saya tidak mengajukan hadiah pada pertanyaan jadi saya tidak yakin apa yang orang tertarik lakukan. Hal utama yang memotivasi saya untuk mengajukan pertanyaan adalah keinginan untuk memahami mengapa seseorang merekomendasikan penggunaan opsi --exec-opt native.cgroupdriver=cgroupfs. Tetapi saya curiga jika Anda menulis jawaban yang menjelaskan pengaturan yang lebih mudah dipahami oleh pemula daripada apa yang ada dalam dokumentasi Docker bahwa Anda akan mendapatkan beberapa upvotes dan mungkin akan membantu jika orang menemukan pertanyaan dari Google di masa depan juga.
Gabriel Southern

Jawaban:

1

Seperti yang dapat saya lihat dari komentar di sumber di: 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.

cgroupfstampaknya merupakan libcontainerimplementasi docker ( ) sendiri yang mengonfigurasi wadah yang cgroupsmenulis langsung ke file di cgroups-file-system(mis. dipasang di /sys/fs/cgroup/).

Snorch
sumber