Inhaltsverzeichnis
1. Was ist ein Docker-Datenvolumen?
2. Warum Datenvolumina verwenden? Layering Das Dateisystem
Docker Managed Volume
5 .docker verwaltetes Volume
7.convoy卷插件
Heim Betrieb und Instandhaltung Docker Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

Jan 21, 2022 pm 06:15 PM
docker

Dieser Artikel vermittelt Ihnen relevantes Wissen über die Datenvolumenverwaltung und das Convoy-Volume-Plug-in in Docker. Ich hoffe, dass er Ihnen hilfreich sein wird.

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

1. Was ist ein Docker-Datenvolumen?

  • Ein Datenvolumen ist ein speziell dafür vorgesehenes Verzeichnis in einem oder mehreren Containern, das das gemeinsame Dateisystem umgehen kann.
    Volumes sind auf Datenpersistenz ausgelegt und unabhängig vom Lebenszyklus des Containers.

  • Daher löscht Docker das Datenvolumen nicht automatisch, wenn der Container gelöscht wird, und sammelt auch nicht aktiv Volumes, die vom Container nicht mehr verwendet werden.

  • Das Vorhandensein des Datenvolumens dient dazu, die Daten des Containers dauerhaft zu halten und den Datenaustausch zwischen Containern zu ermöglichen.

  • Laienhaft ausgedrückt kann das Docker-Container-Datenvolumen als ein in unserem Leben häufig verwendetes USB-Flash-Laufwerk angesehen werden. Es existiert in einem oder mehreren Containern und wird von Docker an den Container gemountet, gehört aber nicht dazu Docker löscht seine gemounteten Datenvolumes nicht, wenn ein Container gelöscht wird.

2. Warum Datenvolumina verwenden? Layering Das Dateisystem

hat die gleiche Leistung wie die Host-Festplatte

    Nur lokale Festplatten und kann nicht mit dem Container 3 migriert werden bind mount
  • dient zum Übertragen des Dateisystems auf dem Host. Mounten Sie Verzeichnisse oder Dateien in Container.

Es ist intuitiv, effizient und leicht zu verstehen.
  • Verwenden Sie die Option -v, um den Pfad und das Format anzugeben:
  • bind mount Die Standardberechtigung ist Lesen und Schreiben rw, Sie können beim Mounten schreibgeschütztes ro angeben.
  • Der durch die Option -v angegebene Pfad wird beim Mounten automatisch erstellt, sofern er nicht vorhanden ist.

Docker Managed Volume

Bind Mount muss den Host-Dateisystempfad angeben, was die Portabilität einschränkt.

Von Docker verwaltetes Volume muss die Mount-Quelle nicht angeben

Vergleich von Bind Mount und Docker verwaltetem Volume
  • Gleiche Punkte: Beide sind ein bestimmter Pfad im Host-Dateisystem
  • Unterschiede:
  • 4.bind Mount Anwendung
docker network prune 
docker network ls
docker run -d --name vm1 -v /opt/website:/usr/share/nginx/html nginx
docker ps
Nach dem Login kopieren

docker inspect vm1	#查看到ip为172.17.0.2
curl 172.17.0.2
Nach dem Login kopieren

Es ​​wurde festgestellt, dass es sich um eine 403-Seite handelt:

cd /opt/website/
ls	#发现没有默认发布页面
echo www.westos.org > index.html
curl 172.17.0.2
Nach dem Login kopieren
Zu diesem Zeitpunkt besuchen Sie nginx und es gibt www.westos.org-Inhalt:

Sie können beim Mounten auch Berechtigungen angeben:

docker run -it --rm -v /opt/website:/data1 -v /etc/passwd:/data2/passwd:ro busybox
Nach dem Login kopieren

Sie können die Standardberechtigung sehen: rw lesen und schreiben, sodass wir den Inhalt von index.html ändern können. Nachdem wir passwd als schreibgeschützt angegeben haben, können wir den Inhalt nicht ändern, sondern nur lesen
Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

5 .docker verwaltetes Volume

Vorhandenes Management-Volume anzeigen: Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

docker volume ls
Nach dem Login kopieren
Manchmal haben wir nach dem Löschen des Containers noch verbleibende Verwaltungsvolumes, sonst werden unsere Ressourcen belegt:

docker volume prune 
docker volume ls
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele) Über Docker volume Sie können den Inhalt des Containers auf den Mount-Punkt kopieren:

docker run -d --name registry registry
cd /var/lib/docker/volumes/
ls
docker history registry:latest
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
docker run -d --name vm2 -v /usr/share/nginx/html nginx
cd /var/lib/docker/volumes/
ls
cd 674c999f99b7b524d8f5769b65cb5411d11e3fa855da695a5fdd3494e4342d89/
cd _data/
ls	#查看到默认发布目录被复制到了这里
Nach dem Login kopieren


docker inspect vm2
curl 172.17.0.3	#nginx默认发布页
Nach dem Login kopieren
Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

6. Einführung in das Docker-Volume-Plugin

Docker-Volume verwendet standardmäßig einen lokalen Treiber und kann nur im Host-Host vorhanden,

Hostübergreifende Volumes müssen Treiber von Drittanbietern verwenden

, Sie können den Link anzeigen: Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele) https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。
当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。

7.convoy卷插件

convoy卷插件支持三种运行方式:devicemapper、NFS、EBS。下面的实验以nfs的运行方式来演示

实验目的:在server1和2底层用nfs来实现数据共享

step1 首先在server1和server2上搭建nfs文件系统:

server1:

yum install -y nfs-utils
systemctl start rpcbind	
mkdir /nfs	#创建共享目录
chmod 777 /nfs	#修改共享目录权限
vim /etc/exports	#编辑共享目录文件,否则将不会被共享出去
/nfs	*(rw,no_root_squash)
systemctl start nfs
Nach dem Login kopieren

注意:rpcbind服务必须是开启的。这是因为:他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
server2:

yum install -y nfs-utils
systemctl start nfs-server.service
showmount -e server1	#寻找server1的挂载目录
mkdir /nfs
mount server1:/nfs /nfs
df
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
测试:
在server2中:

cd /nfs/
touch file
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
在server1中:

cd /nfs/
ls	#查看到file
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
说明两个节点的/nfs实现同步了

step2 配置convoy环境:
docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。

在server1中:

tar zxf convoy.tar.gz 
cd convoy/
cp convoy* /usr/local/bin/  #将二进制文件加入到PATH路径
mkdir /etc/docker/plugins	#创建docker的插件目录
convoy daemon --drivers vfs --driver-opts vfs.path=/nfs &> /dev/null &
cd /nfs
ls
Nach dem Login kopieren

注意:第一次运行上面的convoy daemon命令的时候,会在/nfs目录下生成一个config文件夹,这个文件夹不要删除,不然客户端的convoy命令就会用不了

echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
#将convoy守护进程开启生成的.sock文件放入/etc/docker/plugins目录下的convoy.spec文件中,docker就可以识别。(其中convoy.spec文件之前是不存在的)
cat /etc/docker/plugins/convoy.spec
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
在server2中同样配置convoy环境:

scp -r server1:convoy .
cd convoy/
cp convoy* /usr/local/bin/  #将二进制文件加入到PATH路径
mkdir /etc/docker/plugins	#创建docker的插件目录
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
convoy daemon --drivers vfs --driver-opts vfs.path=/nfs &> /dev/null &
cd /nfs
ls
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
step3 创建卷:

docker volume ls
convoy create vol1
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
step4 操作卷:

在server2中运行容器,指定卷为刚才新创建的vol1:

docker run -it --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
docker inspect vm1
curl 172.17.0.2	#nginx默认发布页
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)

cd /nfs/
cd vol1/
echo hello convoy > index.html
curl 172.17.0.2
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
在server1中数据也同步了:

cd /nfs/
cd vol1/
cat index.html
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
在ser1中也可以运行容器,也可以用到共享的数据卷

说明:docker引擎默认扫描 /etc/docker/plugins目录中的convoy.spec—>访问/run/convoy/convoy.sock文件—>发起响应的api请求—>把数据写入vol1中—>底层通过nfs进行主机间的数据同步

如何删除通过nfs创建的数据卷,让之后创建的数据卷都是本地的呢?

删除卷:

convoy delete vol1
Nach dem Login kopieren

实现本地驱动:

cd /etc/docker/plugins/
mv convoy.spec /mnt
systemctl restart docker
Nach dem Login kopieren

创建卷:

docker volume create vol1
ls
cd volumes/
ls	#可以看到vol1,默认创建在这个目录下
cd vol1/
ls
cd _data/
ls	#进入该目录,是空的
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
使用卷:

docker run -d --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
ls	#看到nginx默认发布目录被挂到这里了
Nach dem Login kopieren

Detaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele)
补充几条命令:

docker container prune	#删除停止的容器
docker volume prune	#删除没有被使用的卷
Nach dem Login kopieren

推荐学习:《docker视频教程

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Docker-Datenvolumenmanagement und das Convoy-Volume-Plug-in (detaillierte Beispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So ändern Sie die Docker -Bildquelle in China So ändern Sie die Docker -Bildquelle in China Apr 15, 2025 am 11:30 AM

Sie können zur Quelle der Inlandsspiegel wechseln. Die Schritte sind wie folgt: 1. Bearbeiten Sie die Konfigurationsdatei /etc/docker/daemon.json und fügen Sie die Spiegelquellenadresse hinzu; 2. Starten Sie den Docker Service Sudo SystemCtl Docker neu, um die Download -Geschwindigkeit und -stabilität des Bilddownloads zu verbessern.

So erstellen Sie einen Spiegel in Docker So erstellen Sie einen Spiegel in Docker Apr 15, 2025 am 11:27 AM

Schritte zum Erstellen eines Docker -Images: Schreiben Sie eine Dockerfile, die die Build -Anweisungen enthält. Erstellen Sie das Bild im Terminal mit dem Befehl Docker Build. Markieren Sie das Bild und weisen Sie Namen und Tags mit dem Befehl Docker Tag zu.

So verwenden Sie Docker Desktop So verwenden Sie Docker Desktop Apr 15, 2025 am 11:45 AM

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).

So erstellen Sie ein privates Repository von Docker So erstellen Sie ein privates Repository von Docker Apr 15, 2025 am 11:06 AM

Sie können Docker -private Repositorys erstellen, um Containerbilder sicher zu speichern und zu verwalten und strenge Kontrolle und Sicherheit bereitzustellen. Zu den Schritten gehören: Erstellen eines Repositorys, Gewährung von Zugriff, Bereitstellung eines Repositorys, Drückens eines Bildes und Ziehen eines Bildes. Zu den Vorteilen gehören Sicherheit, Versionskontrolle, reduzierter Netzwerkverkehr und Anpassung.

So rufen Sie Docker lnmp an So rufen Sie Docker lnmp an Apr 15, 2025 am 11:15 AM

Docker LNMP Container Anrufschritte: Führen Sie den Container aus: Docker Run -d --Name LNMP -Container -P 80:80 -P 443: 443 LNMP -Stack, um den Container IP zu erhalten: Docker Inspecy Lnmp -Container | GREP iPaddress Access Website: http: // & lt; Container IP & gt;/index.phpssh Access: Docker Exec -it lnmp -container Bash Access MySQL: Mysql -U Roo

So führen Sie den Befehl Docker aus So führen Sie den Befehl Docker aus Apr 15, 2025 am 11:24 AM

Wie reite ich Docker -Befehle aus? Installieren Sie Docker und starten Sie den Daemon. Common Docker -Befehle: Docker Bilder: Anzeige Bild Docker PS: Anzeige Container Docker Ausführen: Ausführen Container Docker Stopp: Stopp Container Docker RM: Löschen Sie Container Interagieren Sie mit Container mit Docker -Befehl: Dokker Exec: Execute -Befehl Dockker Anhang: Anhängen Konsole Docker Protokolls: Display LOCKER DOCKER Commit Wechsel zum Mirror Stop Dokker

So speichern Sie das Docker -Bild So speichern Sie das Docker -Bild Apr 15, 2025 am 11:54 AM

Um das Bild in Docker zu speichern, können Sie den Befehl docker comit verwenden, um ein neues Bild zu erstellen, das den aktuellen Status des angegebenen Containers Syntax: Docker Commit [Optionen] Container -ID -Bildname enthält. Um das Bild im Repository zu speichern, können Sie den Befehl Docker Push, Syntax: Docker -Push -Bildname [: Tag] verwenden. Um gespeicherte Bilder zu importieren, können Sie den Befehl Docker Pull, Syntax: Docker Pull Bildname [: Tag] verwenden.

So aktualisieren Sie das Bild von Docker So aktualisieren Sie das Bild von Docker Apr 15, 2025 pm 12:03 PM

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

See all articles