Dovrei eseguire contenitori Docker privilegiati?

Dovrei eseguire contenitori Docker privilegiati?
I contenitori Docker sono il componente principale della piattaforma Docker che consente agli sviluppatori di creare e distribuire il programma in un ambiente di runtime virtualizzato. Sono gestiti e istruiti da Docker Images. Il contenitore Docker incapsula il progetto e tutte le sue dipendenze. I contenitori Docker possono essere eseguibili in modalità privilegiata, una potente funzione della piattaforma Docker che consente ai programmatori di eseguire contenitori con accesso alla radice che significa che i contenitori possono accedere ai privilegi host completi

Questo blog spiegherà:

  • Se si esegue contenitori Docker privilegiati?
  • Come eseguire Docker Container in modalità privilegiata?

Se si esegue contenitori Docker privilegiati?

L'esecuzione di contenitori in modalità privilegiata non è consigliato perché è rischioso. Come la modalità privilegiata, il contenitore root avrà pieno accesso come utente di root dell'host ed evita tutti i controlli. Un altro motivo è che se le risorse hardware dell'host e il kernel sono mai esposte a un attaccante esterno, il sistema potrebbe essere costantemente in pericolo. Tuttavia, l'esecuzione del contenitore privilegiato è necessario per alcune situazioni, come l'esecuzione di Docker all'interno di un'altra piattaforma Docker.

Come eseguire un contenitore Docker privilegiato?

Per eseguire i contenitori Docker in modalità privilegiata per concedere i privilegi host, seguire le istruzioni fornite.

Passaggio 1: crea Dockerfile

Innanzitutto, apri l'editor di codice Visual Studio e crea un nuovo Dockerfile. Dopodiché, incolla il seguente codice in "Dockerfile" come mostrato di seguito. Queste istruzioni eseguiranno il semplice programma Golang sul server:

Da golang: 1.8 come costruttore
Workdir/go/src/app
Copia principale.andare .
Esegui GO Build -O Webserver .
Cmd ["./server web"]

Passaggio 2: creare file di programma

Successivamente, crea un "principale.andare"File e incolla il seguente codice Golang nel file. Questo visualizzerà il “Ciao! Benvenuti in LinuxHint Tutorial":

Pacchetto principale
importazione (
"FMT"
"tronco d'albero"
"net/http"
)
Funchandler (W http.Responsewriter, r *http.Richiesta)
fmt.Fprintf (w, "ciao! Benvenuto in LinuxHint Tutorial ")

funcmain ()
http.Handlefunc ("/", gestore)
tronco d'albero.Fatale (http.Ascoltandserve ("0.0.0.0: 8080 ", zero))

Passaggio 3: crea l'immagine Docker

Successivamente, crea la nuova immagine Docker utilizzando il comando fornito. IL "-T"Il flag viene utilizzato per specificare il tag o il nome dell'immagine Docker:

$ Docker build -t golang: ultimo .

Passaggio 4: eseguire Docker Container in modalità privilegiata

Successivamente, esegui il contenitore Docker in modalità privilegiata eseguendo l'immagine appena creata insieme a "-privilegiato" opzione. Qui, il "-D"L'opzione viene utilizzata per eseguire il contenitore in background e"-P"L'opzione viene utilizzata per specificare il numero di porta per l'host locale:

$ Docker Run -Privileged -D -p 8080: 8080 Golang

Quindi, navigare verso "Localhost: 8080"Per verificare se l'applicazione è in esecuzione o meno:


Si può osservare che abbiamo distribuito con successo il programma ed eseguiamo il contenitore in modalità privilegiata.

Passaggio 5: elenca i contenitori Docker

Elenca tutti i contenitori con l'aiuto di "Docker PS"Comando insieme al"-UN" opzione:

$ Docker PS -a

Nota l'ID contenitore per verificare se viene eseguito in modalità privilegiata o meno:

Passaggio 6: Controllare il contenitore è in esecuzione in modalità privilegiata

Per verificare se il contenitore è in esecuzione in modalità privilegiata o meno, utilizza il “Docker Ispect"Comando insieme al formato menzionato e ID contenitore copiato:

$ Docker Ispect - -Format = '.Hostconfig.Privilegiato 'b46571b87efd

IL "VERO"L'output significa che il contenitore è in esecuzione in modalità privilegiata:

Ancora una volta, eseguire il comando fornito con un altro ID contenitore:

$ Docker Ispect - -Format = '.Hostconfig.Privilegiato 'd3187ab39ee9

Qui, puoi vedere il "falso"Output che indica che il contenitore che ha un ID specificato non viene eseguito in modalità privilegiata:


Abbiamo discusso se gli utenti dovrebbero eseguire il contenitore Docker in modalità privilegiata.

Conclusione

No, non è consigliabile eseguire contenitori in modalità privilegiata in quanto crea un rischio per la sicurezza. I contenitori con accesso alla radice hanno privilegi completi come accesso alla root dell'host ed eviteranno tutti i controlli. Per eseguire il contenitore Docker con modalità privilegiata, utilizzare "Docker run -privilegiato"Comando. Questo articolo è elaborato se si dovrebbe eseguire contenitori Docker privilegiati.