Questo blog spiegherà:
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.