Was ist der Unterschied zwischen Volumen und Volumina?
Sah ich die docker-verfassen-Muster, aber ich bin verwirrt. Was ist der beste Weg zu machen, komponiert-Container.
Wann sollte ich link
oder volumes_from
.
Wann sollte ich volumes_from
, volumes
1-app-db-Daten
app:
image: someimage
link:
- db //data volume container name
db:
image: mysql
volumes_from:
- data //data volume name
data:
image: someimage
volumes:
- {host data}:{guest data}
2 app-db+Daten
app:
image: someimage
link:
- db //data volume container name
db:
image: mysql
volumes:
- data //data file name
app
1-app-service-Daten
app:
image: someimage
volumes_from:
- service //service container name
service:
image: mysql
volumes_from:
- data //image container name
data:
image: someimage
volumes:
- {host data}:{guest data}
2 app-service+Daten
app:
image: someimage
volumes_from:
- service //service container name
service:
image: mysql
volumes:
- data //mounted file
Dank
InformationsquelleAutor der Frage Tomoaki Sato | 2015-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Link und volumes_from sind unterschiedliche Konzepte. Links werden verwendet, wenn Sie eine Verbindung herstellen müssen (durch Netzwerk) zwei Container. In diesem Fall, wenn Sie eine Verbindung herstellen möchten eine App auf die Datenbank, die Art und Weise, dies zu tun ist durch die Verwendung eines link, da die Anwendungen verwenden, einen port und ein host, um eine Verbindung zu einer Datenbank (nicht ein Verzeichnis auf dem Dateisystem).
Bände und volumes_from unterscheiden, dass die erste nur erklärt volumes, die Andockfenster wird persistent oder Gastgeber:Gast mounts, aber volumes_from erzählt Andockfenster verwenden Sie ein Volumen, das bereits erklärt, auf einen anderen host (an diesem Rechner).
Dieser 4 Fälle, die Sie präsentieren, ich denke, dass die erste und die zweite sind eine gute Wahl. In den ersten Sie erstellen, die nur Daten-container, und stellen Sie die mysql-container verwenden. Im zweiten Fall werden die Daten und die mysql-container sind die gleichen.
Links und Volumen sind perfekt erklärt, in der docker Dokumentation.
Hoffe, es hilft.
InformationsquelleAutor der Antwort Jorge Marey
Kurz:
volumes_from
mounts aus anderen Containern.volumes
mounts inline definiert.links
verbindet Container.Ein wenig mehr erklärt:
volumes_from
mounts Bände aus anderen Containern. Zum Beispiel, wenn Sie Daten haben nur Container und mountest du diese Daten nur Container in den container, in Ihrer Anwendung code.volumes
ist ein inline-Möglichkeit zum definieren und bereitstellen von volumes. Wenn Sie Lesen, #17798 Sie sehen können, dass die namens-volumes können die Daten ersetzen, nur Container in den meisten Fällen.Das einfachste ist dann zu verwenden, Bände. Da können Sie diese wiederverwenden, indem Sie Sie.
links
ist anders. Da spielt es nicht mounten. Stattdessen verbindet es sich mit Behälter. Also, wenn Sie tun:Dass bedeutet, dass, wenn Sie eine Verbindung zu
app_container
mitdocker exec -it app_container bash
und versuchenping db
Sie werden sehen, dass der container in der Lage ist zu lösen eine ip für die db.Dies ist, weil docker schafft eine Netzwerk zwischen den Behältern.
InformationsquelleAutor der Antwort juanpastas
Zusatz: Volumes_from wird verwendet, wenn Sie möchten, montieren Sie alle anon-Volumen des container - namens Volumen haben könnte, wurde direkt montiert seit den frühen Tagen.
AFAICs https://docs.docker.com/compose/compose-file/#volumes . docker-Komponieren entfernt hat, diese Funktionalität vollständig, nicht sicher, wie und warum und ob es eine alternative gibt. Aber angenommen, Sie haben einen app-container, und Sie haben eine httpd-container. In der Regel definieren Sie die codebase-Ordner /var/www, als anon Lautstärke, und stellen Sie es in der httpd dienen statische Dateien über den httpd-Dienst, indem Sie alle dynamischen Dateien wie ruby/php/java, um eine upstream-backend auf app.
Den Punkt in der Benutzung eines anon-Volumen und nicht einem benannten volume ist, das Sie tatsächlich wollen Sie die Möglichkeit zur Umschichtung der app und ändern Sie die codebase ( app-update ) nicht funktionieren würde, wenn die app hätte eine benannte Band. Das heißt, anon volumes tun genau das und das ist, warum volumes_from hier verwendet wird - die Verwendung von benannten Mengen ist keine option, ist diesem Fall ( wie es auch sehr praktisch, in vielen anderen Fällen ).
Für den Bezug der upgrade-guides für volumes_from:
https://docs.docker.com/compose/compose-file/compose-versioning/#upgrading
So volumes_from in der Regel verwendet wird, in einem anderen Kontext /Szenario-und named-Bände sind der standard in a lle anderen Fällen, wie oben erklärt. Einen kurzen Beitrag über das ist https://stackoverflow.com/a/44744861/3625317
InformationsquelleAutor der Antwort Eugen Mayer