Hallo, ich möchte gerne ein Shellskript zur Konfiguration der Umgebung des Containers vor dem Containerstart per docker-compose auf dem Docker-Host ausführen, um ein benötigtes Verzeichnis zu mounten. Bisher konnte ich keine Möglichkeit finden die mir konsistent erscheint. Kann mir jemand raten?
Umgebung vor Start des Containers einrichten
Anmeldungsdatum: Beiträge: 7 |
|
Ehemaliger
Anmeldungsdatum: Beiträge: 17277 |
Von was für einem Host reden wir? Eine 0815 Linux Kiste, oder was spezielles wie Kubernetes, CoreOS oder sonstwas? Wie wird der Container gestartet? Standard, zumindest im Server Umfeld, ist das die entsprechenden Mountpoints durch ansible, puppet oder ähnliches am Host vorhanden sind und damit nicht Teil von der Containerspielerei sind. Der Ansatz von Docker ist ja das es möglichst Portabel sein soll, spezifische Host Anpassungen wären da kontraproduktiv (meiner Ansicht nach). mfg Stefan |
(Themenstarter)
Anmeldungsdatum: Beiträge: 7 |
Hallo encbladexp, danke für deine schnelle Antwort. Es geht um einen dezidierten Server in der Schule mit Debian auf dem Docker läuft. Nachdem ich die Dockerbefehle zunächst in Shellskripten aufgerufen habe, bin ich auf docker-compose umgestiegen, um die Übersicht über jetzt 4 Dienste mit 14 Containern zu behalten. Die Container jeder Gruppe werden über docker-compose up -d gestartet. Wenn ich z.B. das Verzeichnis mit den HTML-Dateien für einen startenden Webserver-Container benötige, welches auf einem anderen Server bereitgestellt wird, muss ich es vor dem Containerstart mounten. Dafür möchte ich tatsächlich keine Bastelei, sondern möglichst einen Aufruf wie preexec: in der docker-compose.yml. Bei Cron habe ich schon von außen mit exec-Aufrufen gewurstelt, aber mehr davon muss es nicht sein. Gemountet soll nur werden, wenn die Container laufen. Von den von dir genannten Dingen habe ich bisher nicht gehört. Nach erster Sichtung erscheint mir das aber eher als oversized - oder liege ich damit daneben? |
Ehemaliger
Anmeldungsdatum: Beiträge: 17277 |
Das ist richtig, das ist dein Job als Systemadministrator. Die Idee von Docker Compose ist es ja, wie du schon gemerkt hast, Container gut zusammenarbeiten zu lassen. Die Aufgabe davon ist es aber nicht deinen Host entsprechend zu konfigurieren. Mir ist auch unklar was dagegen spricht das Remote Verzeichnis einfach permanent gemounted zu haben 😉
In größeren Installationen (oder weil man es kann) nimmt man Tools welche die Systemkonfiguration in einen bestimmten Stand bringen, dazu gehörten Ansible, Chef, Puppet und noch einige andere. mfg Stefan |
Anmeldungsdatum: Beiträge: 3459 |
Das gehört in deinen Container-Build rein. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 7 |
Kann man da Befehle auf dem Docker-Host ausführen? Ich hab das so verstanden, dass die Befehle im Container laufen. Kannst du ein Bespiel geben? |
Supporter
Anmeldungsdatum: Beiträge: 6389 |
Was meinst du mit "anderen Server"? Wie werden die Daten dort bereit gestellt? NFS oder sowas? Dann gibt es mehrere Varianten, das zu lösen:
Vor- und Nachteile:
Ich würde mal mit 1. beginnen und als Variante ggf. 2. probieren. Dann bekommt man ein Gefühl dafür. Spätestens für den SwarmMode muss man sich dann eh mit den unterschiedlichen Varianten beschäftigen. Ich hatte noch andere Varianten im Kopf, die fallen mir aber gerade nicht mehr ein. ☺ Alles in allem ist das eine Design-Frage der Infrastruktur. Wichtig ist, dass man die Varianten kennt - nur dann kann man entscheiden, was für den eigenen Anwendungsfall/Infrastruktur passt. Bei Fragen einfach nochmal melden. Gruß BillMaier Ps:
1b) Man kann natürlich das ganze (also das Pps. config für 2 (ich musste lange suchen) volumes: nfs-data: driver: local driver_opts: device: :/ o: addr=<IP> type: nfs4 |
(Themenstarter)
Anmeldungsdatum: Beiträge: 7 |
ok ☺ 1b. und 2. sehen gut aus. Danke. Probiere ich aus. |
Supporter
Anmeldungsdatum: Beiträge: 6389 |
1b) ist ja nur die Erweiterung von 1) Ich frage mich tatsächlich auch (wie encbladexp) , warum die mounts nicht immer da liegen sollen. Aber ich kenne ja das Design nicht. |
Supporter
Anmeldungsdatum: Beiträge: 6389 |
gelöst? |