Ich spiele mit Docker in der EC2-Umgebung (Amazon Linux2). Als ich bemerkte, vermehrten sich die Mount-Punkte auf dem Host-Betriebssystem. .. .. Also habe ich verschiedene Dinge versucht, um mein Verständnis von Volumen zu vertiefen.
Auszug aus der Beschreibung von Dockerfile-VOLUME in der Docker-Referenz Die Anweisung> VOLUME erstellt einen Einhängepunkt mit dem angegebenen Namen und macht ihn zu einem extern bereitstellbaren Volume von einem anderen Host oder Container. Der Befehl "Docker Run" initialisiert das neu erstellte Volume als Speicherort für die Daten an dem im Basisimage angegebenen Speicherort.
Nachdem ich dies gelesen hatte, verstand ich, dass "das von VOLUME angegebene Verzeichnis im Container erstellt wird", aber ** "Machen Sie es zu einem extern bereitstellbaren Volume von einem anderen Host oder Container" ** , Es wurde erkannt, dass beim Starten (Ausführen) des Containers "-v" verwendet wurde, um ein Verzeichnis zu definieren, das mit einem Verzeichnis auf dem Host-Betriebssystem verknüpft werden kann. (Wenn Sie -v nicht angeben, wird es schließlich nicht beibehalten und die Daten werden verworfen.)
Also habe ich die Funktionsweise von Volume auf verschiedene Arten überprüft.
--Versuchen Sie den Container von einem Image (CentOS) ohne VOLUME-Angabe (-v, --mount nicht angegeben)
#Lautstärke existiert nicht(Vor dem Starten des Containers)
[~]docker volume ls
DRIVER VOLUME NAME
#Starten Sie den Container vom CentOS-Image
[~]docker run --name test_container -dt centos
#Lautstärke existiert nicht(Nach dem Starten des Containers)
docker volume ls
DRIVER VOLUME NAME
--Versuchen Sie den Container vom Image aus mit angegebenem VOLUME (-v, --mount nicht angegeben) Erstellen Sie mit der folgenden Docker-Datei ein Image mit dem angegebenen Volume basierend auf dem CentOS-Image und starten Sie es.
#dockerfile(Lautstärke basierend auf dem CentOS-Image=/test_Lautstärke definieren)
ARG baseimagetag=latest
FROM centos:${baseimagetag} AS baseimage
VOLUME /test_volume
#Docker-Image-Erstellung
[~]docker build -t centos_mod .
#Lautstärke existiert nicht(Vor dem Starten des Containers)
[~]docker volume ls
DRIVER VOLUME NAME
#CentOS(Änderung)Starten Sie den Container vom Image aus
[~]docker run --name test_container -dt centos_mod
#Volume wird erstellt(Nach dem Starten des Containers)
docker volume ls
DRIVER VOLUME NAME
local ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b
#Überprüfen Sie den Mount-Punkt auf dem Host-Betriebssystem von Volume
#Automatisch/var/lib/docker/volumes/Sie können sehen, dass der Einhängepunkt darunter erstellt wird
[~]docker inspect ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b
[
{
"CreatedAt": "2020-07-10T08:30:00+09:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b/_data",
"Name": "ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b",
"Options": null,
"Scope": "local"
}
]
#Container anhalten und löschen
[~]docker stop test_container
[~]docker rm test_container
#Volumen bestätigt(Nach dem Löschen des Containers)
#Der Mount-Punkt auf dem Host-Betriebssystem ist vorhanden
docker volume ls
DRIVER VOLUME NAME
local ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b
--Versuchen Sie, den Container vom Image mit der Bezeichnung VOLUME zu starten (geben Sie den Datenträgernamen mit -v an).
#CentOS(Änderung)Starten Sie den Container vom Image aus(Nennen Sie den Mount-Punkt des Host-Betriebssystems(host_mount)Spezifiziert durch
[~]docker run --name test_container -v host_mount:/test_volume -dt centos_mod
baf6954e9dbce1dd9ad3ae5c8286e63c01fd39689d79053725ae1800b70ea752
#Volume wird erstellt(Nach dem Starten des Containers)
[~]docker volume ls
DRIVER VOLUME NAME
local host_mount
#Überprüfen Sie den Mount-Punkt auf dem Host-Betriebssystem von Volume
#Automatisch/var/lib/docker/volumes/Untergeordnet-Name angegeben durch v/_Sie können sehen, dass der Einhängepunkt in Daten erstellt wird
docker inspect host_mount
[
{
"CreatedAt": "2020-07-10T22:22:49+09:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/host_mount/_data",
"Name": "host_mount",
"Options": null,
"Scope": "local"
}
]
--Versuchen Sie den Container vom Image aus mit angegebenem VOLUME (geben Sie das Verzeichnis auf dem Host-Betriebssystem mit -v an).
#CentOS(Änderung)Starten Sie den Container vom Image aus(Verzeichnis der Mountpunkte des Host-Betriebssystems(/test_mount)Spezifiziert durch
[~]docker run --name test_container -v /test_mount:/test_volume -dt centos_mod
e5e70d6235dbfe54950e2053f61236c1450d43c0b3aacfa38341e37cfacecaaa
#Überprüfen Sie die Lautstärke(Nach dem Starten des Containers)
#Der Einhängepunkt wird mit dem folgenden Befehl nicht angezeigt
[~]docker volume ls
DRIVER VOLUME NAME
#Überprüfen Sie den Einhängepunkt anhand der Containerinformationen
[~]docker inspect test_container
##Auszug
"Mounts": [
{
"Type": "bind",
"Source": "/test_mount",
"Destination": "/test_volume",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
Zeigen Sie die Bildinformationen mit docker inspect <Bildname>
an und prüfen Sie, ob das Verzeichnis im Teil ** "Volumes": ** angegeben ist.
Beispiel) Für MySQL-Container / Var / lib / mysql wird im Container als Persistenzbereich definiert
"Volumes": {
"/var/lib/mysql": {}
},
Recommended Posts