Heim >Betrieb und Instandhaltung >Docker >So mounten Sie ein Verzeichnis, ohne Docker neu zu starten

So mounten Sie ein Verzeichnis, ohne Docker neu zu starten

PHPz
PHPzOriginal
2023-04-19 17:25:521381Durchsuche

Mit der Popularität von Docker wurde begonnen, eine große Anzahl von Anwendungen in Docker-Containern bereitzustellen. Die Portabilitäts- und Isolationsvorteile von Docker verbessern die Effizienz und Stabilität der Anwendungsbereitstellung erheblich. Aufgrund der Isolation von Docker-Containern fühlen sich Menschen jedoch manchmal etwas hilflos. In diesem Artikel wird eine Methode zum Mounten eines Verzeichnisses vorgestellt, ohne den Docker-Container neu zu starten.

Zuerst müssen wir die Datenmengen von Docker verstehen. Ein Datenvolumen ist ein Mechanismus zum Speichern von Daten in einem Docker-Container. Es kann ein lokales Verzeichnis in einem Docker-Container bereitstellen, sodass die Daten im Container auf der lokalen Festplatte gespeichert werden können. Beim Starten eines Docker-Containers können Sie ein lokales Verzeichnis zum Mounten angeben, wie unten gezeigt:

docker run -v /localdir:/containerdir image_name

Darunter ist /localdir das lokale Verzeichnis und /containerdir Im Containerverzeichnis ist image_name der Name des Docker-Images. /localdir是本地的目录,/containerdir则是容器内的目录,image_name是Docker镜像的名称。

但是,当我们需要修改目录的挂载关系时,一般需要重新启动Docker容器。这样就会导致应用的停机时间增加,影响用户的使用体验。那么,如何在不重启Docker容器的情况下,修改挂载目录呢?

一种简单的方法是使用mount命令。mount命令可以实现文件系统的挂载和卸载操作,利用它,我们可以在不重启Docker容器的情况下,实现挂载目录的更改。具体操作步骤如下:

  1. 查看当前容器的挂载情况:
docker inspect -f '{{json .Mounts}}' container_name

其中,container_name是指Docker容器的名称。

执行上述命令后,会返回容器中的挂载目录信息,其格式如下:

[
   {
      "Type": "bind",
      "Source": "/var/data",
      "Destination": "/app/data",
      "Mode": "",
      "RW": true,
      "Propagation": "rprivate"
   }
]

其中,Type是挂载类型,Source是本地目录,Destination是容器内目录,RW表示读写权限。

  1. 卸载当前的挂载目录:
mount --make-rprivate /var/data
umount /var/data

上述命令中,--make-rprivate选项用来将该目录设置为私有权限,以避免对其他进程产生影响。umount

Wenn wir jedoch die Mount-Beziehung eines Verzeichnisses ändern müssen, müssen wir im Allgemeinen den Docker-Container neu starten. Dies führt zu längeren Ausfallzeiten der Anwendung und beeinträchtigt das Benutzererlebnis. Wie kann man also das Mount-Verzeichnis ändern, ohne den Docker-Container neu zu starten?
  1. Eine einfache Möglichkeit ist die Verwendung des Befehls mount. Mit dem Befehl mount können wir die Mount- und Unmount-Vorgänge des Dateisystems durchführen. Mit ihm können wir das Mount-Verzeichnis ändern, ohne den Docker-Container neu zu starten. Die spezifischen Schritte sind wie folgt:
    1. Anzeigen des Montagestatus des aktuellen Containers:

      mount --bind /new/data /var/data

      Dabei bezieht sich container_name auf den Namen des Docker-Containers.

      Nach der Ausführung des obigen Befehls werden die Informationen zum Montageverzeichnis im Container zurückgegeben. Das Format lautet wie folgt:

      rrreee🎜Dabei ist Typ der Montagetyp und Quelle ist das lokale Verzeichnis, <code>Destination ist das Verzeichnis innerhalb des Containers und RW steht für Lese- und Schreibberechtigungen. 🎜
        🎜Deinstallieren Sie das aktuelle Mount-Verzeichnis: 🎜🎜rrreee🎜Im obigen Befehl wird die Option --make-rprivate verwendet, um das Verzeichnis auf zu vermeidende private Berechtigungen zu setzen Auswirkungen auf andere Prozesse haben. Der Befehl umount wird zum Aushängen des Verzeichnisses verwendet. 🎜🎜🎜Mounten Sie ein neues Verzeichnis: 🎜🎜rrreee🎜Mit dem obigen Befehl mounten wir das neue Verzeichnis im Originalverzeichnis, um Verzeichnisänderungen zu erreichen. 🎜🎜Durch die oben genannten Schritte haben wir das Mountverzeichnis erfolgreich geändert, ohne den Docker-Container neu zu starten. Es ist zu beachten, dass Sie vor der Änderung alle Prozesse stoppen müssen, die das Verzeichnis belegen, wenn sich im Verzeichnis Dateien befinden, die verwendet werden, um Datenverlust zu vermeiden. 🎜🎜Docker bietet eine effiziente und praktische Container-Bereitstellungslösung, aber in der tatsächlichen Anwendung müssen wir seine Isolationseigenschaften vollständig verstehen und lernen, relevante Techniken zu verwenden, um verschiedene Probleme besser zu bewältigen. Ich glaube, dass Sie durch die Einleitung dieses Artikels eine Methode zum Mounten eines Verzeichnisses beherrschen, ohne den Docker-Container neu zu starten. Ich hoffe, dass sie Ihnen dabei helfen kann, mit tatsächlichen Anwendungsszenarien besser zurechtzukommen. 🎜

    Das obige ist der detaillierte Inhalt vonSo mounten Sie ein Verzeichnis, ohne Docker neu zu starten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn