GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui container su Linux senza sudo in Podman

I container sono una parte importante dell'informatica moderna e, con l'evoluzione dell'infrastruttura attorno ai container, hanno iniziato a emergere strumenti nuovi e migliori. In passato potevi eseguire container solo con LXC, quindi Docker ha guadagnato popolarità e le cose hanno iniziato a diventare più complesse. Alla fine, abbiamo ottenuto il sistema di gestione dei container che tutti meritavamo con Podman, un motore di container senza daemon che semplifica la creazione, l'esecuzione e la gestione di container e pod.

I container si interfacciano direttamente con le capacità del kernel Linux come cgroup e namespace, e generano molti nuovi processi all'interno di questi namespace. In breve, l'esecuzione di un container è letteralmente l'esecuzione di un sistema Linux dentro un sistema Linux. Dal punto di vista del sistema operativo, assomiglia molto a un'attività amministrativa e privilegiata. Gli utenti normali di solito non hanno il controllo sulle risorse di sistema come richiesto dai container, quindi per impostazione predefinita, root o sudo le autorizzazioni sono necessarie per eseguire Podman. Tuttavia, questa è solo l'impostazione predefinita e non è affatto l'unica impostazione disponibile o prevista. Questo articolo mostra come configurare il tuo sistema Linux in modo che un utente normale possa eseguire Podman senza l'uso di sudo ("senza radici").

ID utente spazio dei nomi

Contenitori Linux

  • Cosa sono i container Linux?
  • Un'introduzione alla terminologia dei contenitori
  • Download:Primer sui contenitori
  • Operatori Kubernetes:automatizzare la piattaforma di orchestrazione dei container
  • eBook:modelli Kubernetes per la progettazione di app cloud native
  • Cos'è Kubernetes?

Uno spazio dei nomi del kernel è essenzialmente un costrutto immaginario che aiuta Linux a tenere traccia di quali processi appartengono tra loro. Sono le corde della coda rossa di Linux. In realtà non c'è differenza tra i processi in una coda e l'altra, ma è utile isolarli l'uno dall'altro. Tenerli separati è la chiave per dichiarare un gruppo di processi un "contenitore" e l'altro gruppo di processi il tuo sistema operativo.

Linux tiene traccia di quale utente o gruppo possiede ciascun processo in base all'ID utente (UID) e all'ID gruppo (GID). Normalmente, un utente ha accesso a un migliaio di UID subordinati da assegnare ai processi figlio in uno spazio dei nomi. Poiché Podman esegue un intero sistema operativo subordinato assegnato all'utente che ha avviato il container, è necessario molto di più dell'allocazione predefinita di subid e subgid.

Puoi concedere a un utente più subid e subgid con usermod comando. Ad esempio, per concedere più subid e subgid all'utente tux , scegli un UID adeguatamente alto a cui non è assegnato alcun utente (ad esempio 200.000) e incrementalo di diverse migliaia:

$ sudo usermod \
--add-subuids 200000-265536 \
--add-subgids 200000-265536 \
tux

Accesso allo spazio dei nomi

Ci sono anche dei limiti sugli spazi dei nomi. Questo di solito viene impostato su un valore molto alto, ma puoi verificare l'assegnazione degli spazi dei nomi all'utente con systctl , lo strumento per i parametri del kernel:

$ sysctl --all --pattern user_namespaces
user.max_user_namespaces = 28633

Ci sono molti spazi dei nomi ed è probabilmente ciò che la tua distribuzione ha impostato per impostazione predefinita. Se la tua distribuzione non ha quella proprietà o ha un valore molto basso, puoi crearla inserendo questo testo nel file /etc/sysctl.d/userns.conf :

user.max_user_namespaces=28633

Carica quell'impostazione:

$ sudo sysctl -p /etc/sysctl.d/userns.conf

Esegui un container senza root

Dopo aver impostato la configurazione, riavvia il computer per assicurarti che le modifiche ai parametri utente e kernel siano caricate e attive.

Dopo il riavvio, prova a eseguire un'immagine del contenitore:

$ podman run -it busybox echo "hello"
hello

I contenitori amano i comandi

I container possono sembrare misteriosi se sei nuovo a loro, ma in realtà non sono diversi dal tuo sistema Linux esistente. Sono letteralmente processi in esecuzione sul tuo sistema, senza il costo o la barriera di un ambiente emulato o di una macchina virtuale. Tutto ciò che separa un contenitore dal tuo sistema operativo sono gli spazi dei nomi del kernel, quindi in realtà sono solo processi nativi con etichette diverse su di essi. Podman lo rende più evidente che mai e, una volta configurato Podman come comando senza root, i contenitori sembrano più comandi che ambienti virtuali. Podman rende semplici contenitori e cialde, quindi provalo.


Linux
  1. Come creare un utente Sudo in Rocky Linux 8

  2. Esempi di comandi sudo in Linux

  3. Controllo dell'account utente di Windows rispetto a sudo di Linux

  4. Esegui ifconfig senza sudo

  5. Esegui il comando cd come superutente in Linux

Digita i comandi Linux in lettere maiuscole per eseguirli come utente Sudo

Come eseguire comandi particolari senza password Sudo in Linux

Come eseguire comandi Sudo senza password

Come installare Podman su Rocky Linux 8 / AlmaLinux per eseguire Containers

Come eseguire un alias con Sudo in Linux

Come eseguire sudo comandi senza password