Se il mio programma dipende da una funzione di una libreria del kernel e tale funzione ha a sua volta una catena di dipendenze, come fa la docker a rimanere piccola e portabile senza scattare un'istantanea di tutte le librerie del kernel (e gestendo i problemi di dipendenza a una funzione piuttosto che a livello di libreria)? In altre parole, come si isola dai cambiamenti nelle librerie del kernel da una versione alla successiva, e lo fa in una libreria o in una funzione di granlarity?Come Docker consente contenitori portatili se le librerie del kernel cambiano
E se la mia applicazione ha uno stack software in cui, ad esempio, una funzione è compatibile con una versione futura della libreria kernel A mentre una seconda funzione che utilizza la libreria kernel A non è più compatibile. In altre parole:
funzione 1 & 2 entrambi dipendono e lavorano con funzioni kernel Lib Una versione 1.0
funzione 1 funziona con Lib Una versione 1.1 funzione 2 pause con Lib Una versione 1.1 (funzione 2 ancora ha bisogno di Lib A versione 1.0)
Non so molto di Docker quindi questa è una domanda da principianti.
libc e il kernel Linux sono molto intrecciati Il kernel su cui si sta eseguendo è stato compilato con una libc specifica. La libc che hai è stata compilata per supportare solo kernel al di sopra di una versione specifica. Se aggiorni uno senza l'altro puoi essere dentro per un mondo di dolore. – Eloff
Credo che l'OP significasse le chiamate di sistema supportate da diverse versioni del kernel. Questi sono altamente correlati alla libc. Quindi i contenitori in qualche modo imbrogliano e usano la libc del sistema di base? Potresti incontrare dei problemi se qualche software tentasse di richiamare direttamente un syscall non supportato nel kernel di base? – Otheus