Pengaturan khusus ini berada di bawah pengaruh ruang nama jaringan tempat buruh pelabuhan berjalan.
Sebagai aturan umum /proc
apakah mengubah pengaturan yang relevan di seluruh sistem, secara teknis bagaimanapun Anda mengubah pengaturan di /proc/net
yang mengembalikan hasil berdasarkan ruang nama per jaringan.
Perhatikan bahwa /proc/net
sebenarnya adalah symlink ke /proc/self/net
karena ini benar-benar mencerminkan pengaturan ruang nama tempat Anda bekerja.
Docker 1.12+ memiliki dukungan asli untuk mengutak-atik nilai sysctl di dalam wadah. Berikut adalah kutipan dari dokumentasi:
Konfigurasi parameter kernel namespaced (sysctls) saat runtime
--sysctl menyetel parameter kernel namespaced (sysctls) dalam wadah. Misalnya, untuk mengaktifkan penerusan IP di ruang nama jaringan penampung, jalankan perintah ini:
docker run --sysctl net.ipv4.ip_forward=1 someimage
Menggunakan contoh Anda, cara yang benar untuk menaikkan net.core.somaxconn
akan menjadi:
docker run ... --sysctl net.core.somaxconn=65535 ...
Kontainer yang diistimewakan masih menggunakan ruang nama prosesnya sendiri untuk /proc
. Yang dapat Anda lakukan adalah memasang /proc
yang sebenarnya di dalam wadah:
docker run --rm --privileged -v /proc:/host-proc ubuntu:latest \
'echo 65535 > /host-proc/sys/net/core/somaxconn'