2015-12-28 7 views
5

In meinem Fall habe ich ssmtp Paket auf meinem Unix-basierten Host installiert. Aus irgendeinem Grund ist der beste Weg in meiner Situation die Verwendung von ssmtp binary (unter/usr/sbin) auf meinem Host zum Senden von Mail (HTML-Datei) in meinem APP-Container.Gibt es eine Lösung zum Ausführen von Binärdateien in Containern, die vom Host bereitgestellt werden?

I attemp den Host-Verzeichnis/usr/bin in den Behälter zu montieren:

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

und versuchen ssmtp auszuführen, sind hier einige ungeschickte Versuche und ihre Ergebnisse:

In meinem APP Behälter und unter /host_sbin

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

So scheint es, dass die Dinge nicht t einfach wie ich denke. Konnte jemand so etwas getan haben, die Lösung mit mir teilen? Und ich würde mich freuen, wenn mir jemand erklären kann, warum das nicht funktioniert.

+1

Fand dieses eine nützliche [https://github.com/larsks/dockerize](https://github (die -v /etc/ssmtp:/etc/ssmtp Flagge Container Erstellung verwendet wird). com/larsks/dockerize) – dtmland

Antwort

6

Das einfache Installieren der Binärdatei in Ihrem Container funktioniert nicht, da die Binärdatei ssmtp wahrscheinlich nicht statisch verknüpft ist. Stattdessen ist es dynamisch mit einer Gruppe von gemeinsam genutzten Bibliotheken verknüpft, die in Ihrem Host-System vorhanden sind, jedoch nicht in Ihrem Container. Sie können dies die ldd Befehl überprüfen, whilch alle Bibliotheken gedruckt wird, dass die ssmtp binären gegen verbunden:

> ldd /usr/sbin/ssmtp 

Haben Sie die Host ssmtp binären nutzen wollten, würden Sie auch alle erforderlichen gemeinsam genutzten Bibliotheken zu montieren haben in Dein Container (und den Bibliothekspfad anpassen und so weiter; ich würde es nicht empfehlen).


Hier mein Vorschlag: Das wichtige Bit ist wahrscheinlich nicht die ssmtp binär, aber SSMTP Konfigurationsdateien (je nach Distribution, aber in der Regel in /etc/ssmtp gefunden). Ich würde vorschlagen ...

  1. Installieren Sie ssmtp in Ihrem Container mit dem nativen Paket-Manager des Abbilds. Hängen Sie die Binärdatei nicht vom Host in den Container ein.
  2. Montieren Sie die Hosts SSMTP Konfigurationsdateien in Ihren Behälter
+0

Ich schätze es wirklich, akkordieren Sie Ihre Tipps Es scheint, dass die Montage aller Bibliotheken ist kein guter Weg. In der Tat, ich hatte ein wenig von Ihrem Vorschlag zuvor versucht, aber was ich angetroffen habe ist SMTP-Kommunikationsport in Container, Es scheint, dass Portweiterleitung mit -p ist nicht die richtige Richtung für SMTP funktioniert? Sorry wegen meiner schlechten Kapazität, Hast du das schon mal gemacht? Danke nochmal! – Carr

+0

Ignoriere meine Frage im Kommentar, ich mache nur etwas Dummes. Jetzt funktioniert es! Danke vielmals! – Carr

+3

Nützlicher Zeiger auf 'ldd'-Befehl, der nützlich war, um zu verstehen, was passiert, wenn eine Binärdatei von Container-zu-Andockfenster gemountet wird. –