GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come eseguire un comando su un contenitore Docker in esecuzione

Di solito si desidera che le applicazioni Docker siano completamente contenute, ma a volte per scopi di sviluppo o automazione è utile poter lavorare con i container Docker come se ci fossero macchine virtuali Linux. Docker fornisce strumenti per eseguire comandi e persino intere shell all'interno di contenitori.

Esecuzione dei comandi nei contenitori

Per eseguire un comando in un contenitore, avrai bisogno del suo ID contenitore, a meno che tu non abbia impostato un nome specifico per quel contenitore. Questa è una lunga stringa esadecimale che puoi trovare dall'elenco dei processi Docker:

docker ps

Quindi, puoi usare exec -it comando da eseguire all'interno del contenitore. Ad esempio, visualizzando l'output di un file di registro:

docker exec -it containerID tail /var/log/nginx/access.log

Puoi anche eseguire script all'interno di contenitori:

docker exec -it containerID script.sh

Il -it i flag sono rispettivamente per "modalità interattiva" e TTY e sono usati quasi sempre. Ci sono alcuni altri flag che puoi usare:

  • --workdir o -w cambia la directory corrente prima del comando.
  • --detach o -d , esegue il comando in background.
  • --env o -e , imposta le variabili di ambiente prima dell'esecuzione.
  • --env-file fa lo stesso, ma è più sicuro per la gestione dei segreti.
  • --privileged esegue il comando con autorizzazioni estese.
  • --user viene eseguito come un utente diverso

Naturalmente, questo funziona solo su un contenitore in esecuzione. Se desideri sospendere un container per eseguire la manutenzione, dovrai distribuire gli aggiornamenti tramite una nuova versione dell'immagine o apportare modifiche ai dati montati sul volume dal sistema operativo host.

SSHing in un container

Non sei limitato a semplici comandi, puoi effettivamente aprire una shell eseguendo /bin/bash come il comando. Potresti essere limitato negli strumenti disponibili:la maggior parte dei container presenta un'installazione Linux abbastanza semplice, ma rende molto più semplice l'esecuzione di molti comandi.

docker exec -it containerID /bin/bash

Questa è semplicemente una shell accessibile dall'host, che funziona bene nella maggior parte dei casi. Ma, se lo desideri, puoi configurare i tuoi container in modo che siano completamente disponibili su SSH come un VPS. Puoi leggere ulteriori informazioni sulla configurazione nella nostra guida all'esecuzione di un servizio SSH in un container Docker.

RELAZIONATO: Come eseguire SSH in un contenitore Docker

Copiare file in e da contenitori

Esecuzione di comandi con exec -it funziona, ma c'è ancora uno strato tra l'host e il contenitore che impedisce un facile script. Per uno, mentre è facile inviare comandi a un container, è più difficile ottenere output dal filesystem.

Mentre puoi pipe lo STDOUT di exec -it ad altri servizi sul sistema operativo host, puoi anche copiare file da e verso il filesystem del contenitore. Ad esempio, estraendo un file di registro e incollandolo sull'host:

docker cp container:/var/log/nginx/example.log example.log

O estraendo intere directory:

docker cp nginx:/etc/nginx/ nginxconfig/

Tuttavia, se lo fai regolarmente, potresti prendere in considerazione l'utilizzo di un binding o di un montaggio del volume per rendere i dati direttamente accessibili dall'host.

RELAZIONATO: Come utilizzare Docker Cp per copiare file tra host e container


Docker
  1. Come eseguire un comando all'interno di un contenitore Systemd in esecuzione?

  2. Come eseguire un programma all'interno di un contenitore Docker?

  3. Come eseguire MySQL in un contenitore Docker

  4. Come SSH in un contenitore Docker

  5. Come inviare un segnale al programma eseguito in un contenitore docker?

Come eseguire un'app .NET in Docker

Come verificare se il demone Docker o un container è in esecuzione

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Come creare un'immagine Docker da un contenitore in esecuzione

Come eseguire i contenitori Docker