Docker
Datenvolumen und Datencontainer
Suche…
Nur-Daten-Container
Nur-Daten-Container sind veraltet und gelten jetzt als Anti-Pattern!
In früheren Tagen, vor dem Unterbefehls- volume
Docker, und noch bevor benannte Volumes erstellt werden konnten, löschte Docker Volumes, wenn in keinem Container mehr Verweise darauf vorhanden waren. Nur-Daten-Container sind obsolet, da Docker jetzt die Möglichkeit bietet, benannte Volumes zu erstellen sowie mehr Dienstprogramm über den verschiedenen docker volume
Unterbefehl zu erstellen. Aus diesem Grund werden Datencontainer jetzt als Anti-Pattern betrachtet.
Viele Ressourcen im Internet aus den letzten Jahren erwähnen die Verwendung eines Musters, das als "Nur-Daten-Container" bezeichnet wird. Hierbei handelt es sich einfach um einen Docker-Container, der nur vorhanden ist, um einen Verweis auf ein Datenvolumen zu erhalten.
Denken Sie daran, dass in diesem Zusammenhang ein "Daten-Volume" ein Docker-Volume ist, das nicht vom Host bereitgestellt wird. Zur Verdeutlichung ist ein "Daten-Volume" ein Volume, das entweder mit der VOLUME
Dockerfile-Direktive oder mit der Option -v
in der Befehlszeile in einem docker run
Befehl erstellt wird, insbesondere mit dem Format -v /path/on/container
. Ein "Nur-Daten-Container" ist daher ein Container, dessen einziger Zweck darin besteht, ein Daten-Volume --volumes-from
Flag " --volumes-from
in einem docker run
Befehl verwendet wird. Zum Beispiel:
docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true
Wenn der obige Befehl ausgeführt wird, wird ein "Nur-Daten-Container" erstellt. Es ist einfach ein leerer Container, an den ein Datenvolumen angehängt ist. Es war dann möglich, dieses Volume in einem anderen Container zu verwenden:
docker run -d --name="mysql" --volumes-from="mysql-data" mysql
Der mysql
Container enthält jetzt das gleiche Volume, das auch in mysql-data
.
Da Docker jetzt den volume
Unterbefehl und die benannten Datenträger bereitstellt, ist dieses Muster nun veraltet und wird nicht empfohlen.
Erste Schritte mit dem volume
Unterbefehl und den benannten Volumes finden Sie unter Erstellen eines benannten Volumes
Datenvolumen erstellen
docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql
Dieser Befehl erstellt einen neuen Container aus dem mysql
Image. Es erstellt auch ein neues Daten-Volume, das dann in den Container unter /var/lib/mysql
. Dieses Volume hilft, dass alle darin enthaltenen Daten über die Lebensdauer des Containers hinaus bestehen bleiben. Das heißt, wenn ein Container entfernt wird, werden auch seine Dateisystemänderungen entfernt. Wenn eine Datenbank Daten im Container gespeichert hat und der Container entfernt wurde, werden auch alle diese Daten entfernt. Volumes bleiben an einem bestimmten Ort auch dann erhalten, wenn der Container entfernt wird.
Es ist möglich, dasselbe Volume in mehreren Containern mit der --volumes-from
:
docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql
Dem mysql-2
Container ist jetzt das Datenvolumen aus mysql-1
angehängt, das auch den Pfad /var/lib/mysql
.