Heim >Betrieb und Instandhaltung >Docker >Das ausführlichste Tutorial zum Organisieren von Docker-Datenvolumes
Dieser Artikel vermittelt Ihnen relevantes Wissen über Datenvolumes in Docker. Änderungen an den Datenvolumes werden nicht in die Aktualisierung des Images einbezogen. helfen.
Empfohlene Studie: „Docker-Video-Tutorial“
Bei Verwendung eines Docker-Containers werden eine Reihe von Datendateien generiert, wenn der Docker-Container verschwindet wird gelöscht, aber es wird erwartet, dass ein Teil des generierten Inhalts für eine andere Verwendung gespeichert wird. Die Programmierer hoffen, dass einige der während des laufenden Prozesses generierten Daten beibehalten werden können um Daten zwischen Containern austauschen zu können.
Im Allgemeinen kann das Docker-Container-Datenvolumen als häufig verwendetes USB-Laufwerk betrachtet werden. Es befindet sich in einem oder mehreren Containern und wird von Docker in den Container eingebunden. Es gehört jedoch nicht zum gemeinsamen Dateisystem Löschen Sie es nicht im Container. Löschen Sie das bereitgestellte Datenvolumen.
Datenvolumes können Daten zwischen Containern teilen oder wiederverwenden
Änderungen am Datenvolumen können sofort wirksam werden
Änderungen am Datenvolumen werden nicht in die Aktualisierung des Spiegels einbezogen
Standardmäßig ist Das Datenvolumen bleibt immer bestehen, auch wenn der Container gelöscht wird
Der Lebenszyklus des Datenvolumens wird fortgesetzt, bis es von keinem Container mehr verwendet wird
Datenvolumes: Datenvolumes Daten im Container werden direkt zugeordnet die lokale Host-Umgebung
Allgemeine Parameter-L: Quell-Links im Ziel behaltenGrundlegende VerwendungHostdateien in den Container kopierendocker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATHDateien im Container auf den Host kopieren
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATHDocker-DatenvolumesDatenvolumes (Data Für einen oder mehrere Container stehen Volumes zur Verfügung. Es wird ein spezielles Verzeichnis verwendet, das das Verzeichnis des Host-Betriebssystems direkt in den Container abbildet.
Hinweise zu Datenvolumes
Um ein Datenvolume bereitzustellen, erstellen Sie am besten einen Startcontainer über „Ausführen“ statt über „Erstellen/Starten“. Nachdem der Befehl „Erstellen/Starten“ einen Startcontainer erstellt hat, ist das Mounten ziemlich mühsam Datenvolumen. Viele Konfigurationen müssen geändert werden, aber nicht unmöglich. Die offizielle Website von Docker empfiehlt, möglichst viele Verzeichnisse anstelle von Dateien zu mounten Volumen: Ein von Docker verwaltetes Datenvolumen auf der Festplatte, aber dieses Volumen hat einen Namen. Anonymes Datenvolumen: Ein von Docker verwaltetes Datenvolumen auf der Festplatte. Es ist nicht leicht zu finden, da es keinen Namen gibt.Host-Datenvolumen
Bind-Mounts: Die Daten im Container werden an einer beliebigen Stelle im Host-Dateisystem gespeichert, sogar in einigen wichtigen Systemverzeichnissen oder Dateien. Andere Prozesse als Docker können sie auch beliebig ändern. Bei Verwendung von Bind-Mounts wird das Hostverzeichnis oder die Hostdatei in den Container gemountet. Der Container verwendet oder ändert die Daten des Hosts entsprechend dem absoluten Pfad des Mountverzeichnisses oder der Mountdatei. Verzeichnisse oder Dateien auf dem Host müssen nicht im Voraus vorhanden sein und werden bei Bedarf automatisch erstellt. Die Verwendung von Bind-Mounts ist hinsichtlich der Leistung sehr gut, hängt jedoch davon ab, dass der Host-Computer über ein gut strukturiertes Dateisystem verfügt.Container, die Bind-Mounts verwenden, können das Host-Dateisystem durch den Prozess innerhalb des Containers ändern, einschließlich des Erstellens, Änderns und Löschens wichtiger Systemdateien und Verzeichnisse. Obwohl diese Funktion sehr leistungsfähig ist, hat sie natürlich auch Auswirkungen auf andere Prozesse als Docker auf dem Host
HinweiseWenn Sie ein leeres Datenvolumen in einem nicht leeren Verzeichnis im Container bereitstellen, werden die Dateien in diesem Verzeichnis auf das Datenvolumen kopiertWenn Sie ein nicht leeres Datenvolumen bereitstellen in ein Verzeichnis im Container, und das Verzeichnis im Container zeigt die Daten im Datenvolumen an. Wenn im Originalverzeichnis im Container Daten vorhanden sind, werden die Originaldaten ausgeblendetGrundlegende VerwendungSyntax
docker cp /data/index.html nginx:/usr/share/nginx/html/index.htmlGrundlegende Verwendung
docker cp nginx:/etc/nginx/nginx.conf /dataBerechtigungen für ContainerverzeichnissePass -v Pfad innerhalb des Containers: ro rw Änderung lesen und Schreibberechtigungen ro :readonly Nur lesenrw:readwrite Lesbar und beschreibbardocker run -it -v /Absolutes Pfadverzeichnis des Hosts:/Containerverzeichnis:ro Bildnamedocker run -it -v /Absolutes Pfadverzeichnis des Hosts :/Verzeichnis im Container: rw BildnameZum Beispiel:
docker run -v /宿主机绝对路径目录:/容器内目录 镜像名ro Solange ro angezeigt wird, bedeutet dies, dass dieser Pfad nur über den Host und nicht innerhalb des Containers betrieben werden kann!
Benanntes Datenvolumen
Basic Verwenden Siedocker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -v /data/mysql:/var/lib/mysql mysql:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_cialpine, um das Docker-Datenvolumen anzuzeigen. Docker-Volume lsZeigen Sie das lagouedu-nginx-Hostverzeichnis an s Alle Dateien werden standardmäßig im Docker gespeichert_ cd _data im DatenverzeichnisContainer löschen
docker rm $(docker stop $(docker ps -aq))
查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在
ls
匿名数据卷
基本使用
docker run -itd --name nginx -p 80:80 -v /etc/nginx nginx:1.19.3-alpine 查看docker数据卷 docker volume ls
查看宿主机目录
docker volume inspect dbd07daa4e40148b11....
进入docker数据卷默认目录
cd /var/lib/docker/volumes/dbd07daa4e40148b11....
查看文件
ls
所有的文件docker默认保存在_data目录中 cd _data
删除容器
docker rm $(docker stop $(docker ps -aq))
查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在
ls
run命令
常用参数
--volumes-from
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器
也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。
发现创建好的数据卷容器是处于停止运行的状态,因为使用 —volumes-from 参数所挂载数据卷的容器 自己并不需要保持在运行状态。
基本使用
docker run -d --name data-volume -v /data/nginx:/usr/share/nginx/html -v /data/mysql:/var/lib/mysql centos:7.8.2003 docker run -itd --name nginx01 -p 80:80 --volumes-from data-volume nginx:1.19.3- alpine echo "nginx" > /data/nginx/index.html http://192.168.198.100 docker run -itd --name nginx02 -p 81:80 --volumes-from data-volume nginx:1.19.3- alpine http://192.168.198.100:81 docker run -itd --name mysql01 --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 -- character-set-server=utf8 --collation-server=utf8_general_ci docker run -itd --name mysql02 --restart always --privileged=true -p 3307:3306 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 -- character-set-server=utf8 --collation-server=utf8_general_ci
推荐学习:《docker视频教程》
Das obige ist der detaillierte Inhalt vonDas ausführlichste Tutorial zum Organisieren von Docker-Datenvolumes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!