Risposta breve:
eseguire il programma come un unico contenitore finestra mobile. Pensa a un contenitore docker come a un ambiente isolato leggero, simile a un ambiente virtuale, in cui è possibile eseguire un programma/servizio. Questo servizio può eseguire più thread lanciati dal programma principale: è ancora un servizio in esecuzione su un singolo contenitore finestra mobile.
Spiegazione:
lascia supporre di avere un programma che genera le discussioni a così alcuni lavori - questo programma potrebbe essere un pool di thread di fare qualche calcolo su un insieme di pezzi o potrebbe essere un server web come apache. Potrebbe anche essere un codice python che istanzia un pool di processi per eseguire il calcolo del chunch. In tutti questi casi tutti i thread e i processi appartengono a un processo principale che può essere pensato come un singolo programma o servizio. Questo singolo programma viene attivato tramite un singolo comando utente, il comando che farai nel Dockerfile ENTRYPOINT.
Ad esempio, è possibile eseguire un contenitore Apache Server utilizzando l'immagine ufficiale apache sul mozzo finestra mobile docker hub ref):
docker run -dit --name my-apache-app -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
E questo verrà eseguito il server Web Apache come un unico contenitore, indipendentemente dal numero di thread esegue, che può essere facilmente riferito a quando l'operatore lo desidera arrestato, riavviato, cancellato, ecc. utilizzando i comandi della finestra mobile. E questo è più conveniente, poiché non dobbiamo preoccuparci di collegare volumi di montaggio, aprire porte e collegare moltitudini di contenitori, in modo che comunichino tra loro.
Quindi il punto principale è che si desidera generare un contenitore per ogni istanza di servizio. Ad esempio, se si desidera avviare istanze duplicate del processo principale. eseguire apache su due macchine come parte di una configurazione con bilanciamento del carico, quindi eseguire due contenitori, uno su ciascun host.
Inoltre, se si dispone di un caso d'uso in cui è necessario eseguire diversi lavori nel sistema batch, in cui ogni lavoro ha richiesto l'installazione di librerie specifiche, tale tipo di utilizzo trarrebbe vantaggio dall'isolamento dell'ambiente che si otterrebbe dall'esecuzione di contenitori diversi. Ma questo non è quello che hai chiesto, la tua domanda ha menzionato specificamente un server Web che genera thread e processi che utilizzano thread per fare lavoro su blocchi, e in quei casi si genera un singolo contenitore per il servizio/programma.