Introduzione
Uno dei primi e più importanti comandi che gli utenti di Docker imparano è docker run
comando. Ciò non sorprende poiché la sua funzione principale è quella di creare ed eseguire container.
Esistono molti modi diversi per eseguire un container. Aggiungendo attributi alla sintassi di base, puoi configurare un contenitore per l'esecuzione in modalità separata, impostare un nome contenitore, montare un volume ed eseguire molte altre attività.
In questo tutorial imparerai come usare docker run
comandi con esempi.
Prerequisiti
- Accesso a una riga di comando/finestra del terminale
- Un account utente con sudo privilegi
- Un'installazione Docker esistente
Come utilizzare il comando di esecuzione della finestra mobile
La sintassi di base del comando è:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Per eseguire un container, l'unica cosa che devi includere nel comando è l'immagine su cui si basa:
docker run [docker_image]
Puoi eseguire container da immagini Docker archiviate localmente. Se utilizzi un'immagine che non è sul tuo sistema, il software la estrae dal registro in linea.
Ad esempio, abbiamo utilizzato un Dockerfile per creare un'immagine Docker di esempio con l'attività per fare eco al messaggio Hello World
. Per noi, l'immagine ha l'ID e98b6ec72f51
. Il nome dell'immagine sarà diverso a seconda del contenitore che desideri eseguire.
Il comando per eseguire il nostro contenitore di esempio sarebbe:
docker run e98b6ec72f51
Il contenitore esegue l'attività prescritta (riprende il messaggio Hello World
) e poi si ferma.
Esegui un container con un nome specifico
Quando usi la run
di base comando, Docker genera automaticamente un nome contenitore con una stringa di numeri e lettere selezionati casualmente.
Poiché ci sono poche possibilità che tu riesca a ricordare o riconoscere i contenitori con questi nomi generici, considera di impostare il nome del contenitore su qualcosa di più memorabile.
Usando il --name
attributo consente di assegnare un nome contenitore. Il comando per eseguire un container con un nome specifico è:
docker container run --name [container_name] [docker_image]
Ad esempio, possiamo eseguire il contenitore di esempio e assegnargli il nome istanza_container usando il comando:
docker container run --name container_instance e98b6ec72f51
Puoi verificare se hai impostato correttamente un nome contenitore visualizzando un elenco di tutti i contenitori (in esecuzione e interrotti) con il comando:
docker ps -a
Come nell'immagine qui sotto, dovresti vedere il tuo contenitore appena creato.
Esegui un container in background (modalità staccata)
Esistono due modi per eseguire un container:in modalità collegata (in primo piano) o in modalità distaccata (sullo sfondo).
Per impostazione predefinita, Docker esegue il contenitore in modalità collegata. Ciò significa che è allegato alla sessione del terminale, dove mostra l'output e i messaggi.
Se desideri mantenere separati il contenitore e la sessione del terminale corrente, puoi eseguire il contenitore in background utilizzando il -d
attributo. L'utilizzo della modalità distaccata consente inoltre di chiudere la sessione del terminale aperta senza interrompere il contenitore.
Il comando per eseguire un container in background è:
docker container run -d [docker_image]
Per il nostro esempio, il comando è:
docker container run -d e98b6ec72f51
L'output che riceverai sarà simile a quello che vedi nell'immagine sopra. Il contenitore eseguirà il processo e quindi si fermerà. Nessun altro output verrà visualizzato all'interno della sessione del terminale.
Esegui un container in modo interattivo
Docker ti consente di eseguire un container in modalità interattiva . Ciò significa che puoi eseguire comandi all'interno del contenitore mentre è ancora in esecuzione.
Utilizzando il contenitore in modo interattivo, puoi accedere a un prompt dei comandi all'interno del contenitore in esecuzione. Per farlo, esegui il seguente comando:
docker container run -it [docker_image] /bin/bash
Il prompt dei comandi cambierà, spostandoti alla shell bash come nell'esempio seguente.
Esegui un container e pubblica le porte del container
Quando si esegue un container, l'unico modo per accedere al processo è dall'interno di esso. Per consentire connessioni esterne al container, devi aprire (pubblicare) porte specifiche.
Devi aggiungere il -p
opzione per la docker run
comando e le seguenti informazioni:
-p [host_ip]:[host_port]:[container_port]
Il host_ip
element è facoltativo e non è necessario specificarlo durante l'esecuzione del comando.
Ad esempio, per mappare la porta TCP 80 nel container alla porta 8080 dell'host Docker, eseguiresti:
docker container run -p 8080:80 [docker_image]
Esegui un container e monta i volumi host
I contenitori Docker non salvano i dati che producono. Non appena il processo è terminato, il contenitore si ferma e tutto ciò che contiene viene rimosso.
Se vuoi avere dati persistenti che vengono archiviati anche dopo l'arresto del contenitore, devi abilitare la condivisione dei volumi di archiviazione.
Per i volumi di montaggio, utilizzare il -v
attributo con il percorso specificato della directory in cui si desidera salvare i dati, seguito da dove si troveranno i dati all'interno del contenitore.
-v [/host/volume/location]:[/container/storage]
L'intero docker container run
il comando è:
docker container run -v [/host/volume/location]:[/container/storage] [docker_image]
Esegui un Docker Container e rimuovilo una volta completato il processo
Una volta che un container ha eseguito le sue attività, si ferma, ma il file system in cui è composto rimane nel sistema.
Se hai solo bisogno di un contenitore per eseguire l'attività delineata e non puoi utilizzarlo o il suo file system in seguito, puoi configurarlo per eliminarlo una volta terminato.
Per eseguire un container che verrà rimosso automaticamente dopo l'uscita usa il comando:
docker container run --rm [docker_image]