2015-12-28 23 views
5

Nel mio caso, ho installato il pacchetto ssmtp sul mio host basato su Unix. Per qualche ragione, il modo migliore nella mia situazione è usare ssmtp binary (sotto/usr/sbin) sul mio host per inviare posta (file html) nel mio contenitore APP.Esiste una soluzione per eseguire binari nel contenitore che monta dall'host?

ho attemp per montare la directory host/usr/bin nel contenitore:

docker run -v /usr/sbin:/host_sbin --name=myapp -ti -p 889:80 -p 890:5432 myimage 

e provare ad eseguire ssmtp, ecco alcuni tentativi goffi e dei loro risultati:

Nel mio contenitore APP e sotto /host_sbin

ssmtp ---> bash: ssmtp: command not found 
./ssmtp ---> bash: ./ssmtp: No such file or directory 

Così sembra che le cose non sono Semplice come penso. Qualcuno potrebbe aver fatto qualcosa del genere condividere la soluzione con me? E sarei grato se qualcuno potesse spiegarmi perché non funziona.

+1

trovato questo utile [https://github.com/larsks/dockerize](https://github. com/larsks/dockerize) – dtmland

risposta

6

Il semplice montaggio del file binario nel contenitore non funziona poiché il binario ssmtp non è probabilmente collegato in modo statico. Invece è collegato dinamicamente a un insieme di librerie condivise presenti nel tuo sistema host, ma non nel tuo contenitore. È possibile verificare questo utilizzando il comando ldd, whilch stamperà tutte le librerie che il binario ssmtp è legata contro:

> ldd /usr/sbin/ssmtp 

Se si voleva utilizzare il vostro ospite ssmtp binario, si avrebbe anche per montare tutte le librerie condivise richieste in il tuo contenitore (e aggiusta il percorso della libreria e così via; ti consiglierei di non farlo).


Ecco il mio suggerimento: Il bit importante non è probabilmente il ssmtp binario, ma i file di configurazione di ssmtp (a seconda della distribuzione, ma in genere si trovano in /etc/ssmtp). Suggerirei ...

  1. Installare ssmtp all'interno del contenitore utilizzando il gestore di pacchetti nativo dell'immagine. Non montare il file binario dall'host nel contenitore.
  2. Montare i file di configurazione host ssmtp nel tuo contenitore (utilizzando il flag -v /etc/ssmtp:/etc/ssmtp sulla creazione del contenitore)
+0

Lo apprezzo molto, accodando i tuoi suggerimenti Sembra che montare tutte le librerie non sia un buon modo. In effetti, avevo già provato un po 'del tuo suggerimento, ma quello che ho incontrato è la porta di comunicazione SMTP nel container, Sembra che il port forwarding con -p non sia la direzione corretta per SMTP funziona? Scusa per la mia scarsa capacità, l'hai già fatto prima? Grazie ancora! – Carr

+0

Ignora la mia domanda in commento, faccio solo una cosa stupida. Ora funziona! Molte grazie! – Carr

+3

Puntatore utile al comando 'ldd' che era utile per capire cosa succede quando binario viene montato da container a docker. –