suchen
HeimBetrieb und InstandhaltungDockerWelche Möglichkeiten der Docker-Speicherung gibt es?

Docker verfügt über vier Speichermethoden: 1. „Standardspeicher“, die Daten werden im laufenden Container gespeichert. 2. „Volume-Datenvolumen“; „, mounten Sie direkt ein beliebiges Verzeichnis oder eine Datei im Host-Dateisystem; 4. „tmpfs mount“.

Welche Möglichkeiten der Docker-Speicherung gibt es?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.

Verschiedene Speichermethoden von Docker-Containern

Containerspeicher kann in zwei Hauptkategorien unterteilt werden:

Eine bezieht sich auf Bilder, was wir in „Grundlagen der Docker-Container-Technologie – Gemeinsame Datei“ besprochen haben „System OverlayFS“ Die im Artikel erwähnte Copy-On-Write-Funktion der Containerebene. Standardmäßig werden alle im Container erstellten Dateien auf der beschreibbaren Containerschicht gespeichert. Diese Methode der direkten Speicherung von Dateien auf der Containerschicht erschwert die Beibehaltung und Freigabe von Daten aufgrund der Abhängigkeit von Speichertreibern und der Verwendung des direkten Schreibens auf den Host Diese zusätzliche Abstraktion verringert die Leistung im Vergleich zum Datenvolumen.

Der andere ist der Hostspeicher, der durch Binden oder Einhängen des Hostverzeichnisses in den Container verwendet wird. Die Daten können auch nach dem Stoppen des Containers beibehalten werden. Stellen Sie hauptsächlich Letzteres vor.

Mehrere Speicher-Mounting-Methoden

Hier zeichnen wir das folgende Diagramm basierend auf den verschiedenen Speicherorten, an denen Daten auf dem Docker-Host gespeichert werden:

Welche Möglichkeiten der Docker-Speicherung gibt es?

Docker verfügt über vier Speichermethoden: Standard, Volumes, Datenvolumen, Bind-Mounts-Mounting , tmpfs mount (nur in Linux-Umgebung verfügbar), wobei Volumes und Bind-Mounts persistente Containerdaten implementieren.

1. Standardspeicher

Daten werden im laufenden Container gespeichert. Nach dem Löschen des Containers werden auch die Daten gelöscht.

2. Bind-Mounts haben im Vergleich zu Volumes eingeschränkte Funktionen. Bei Verwendung von Bind Mount wird eine Datei oder ein Verzeichnis auf dem Host in den Container gemountet. Auf die Datei oder das Verzeichnis wird durch ihren vollständigen Pfad auf dem Host verwiesen. Das Verzeichnis muss nicht bereits auf dem Docker-Host vorhanden sein. Wenn es nicht vorhanden ist, erstellt Docker es für uns. Beachten Sie, dass nur Verzeichnisse automatisch erstellt werden können.

Wir binden das Mounten eines Verzeichnisses /nginx/html über die Option -v und werfen einen Blick in den Container.

docker run -dt -v /nginx/html:/usr/share/nginx/html --name nginx nginx

Sehen Sie sich das Feld „Container-Mounts“ über Docker inspect nginx an Schreiben Sie es „Hallo Nginx“ und greifen Sie dann auf die Container-IP zu. Offensichtlich hat unser Mounten Wirkung gezeigt.

"Mounts": [
    {
        "Type": "bind",
        "Source": "/nginx/html",
        "Destination": "/usr/share/nginx/html",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

Hier gibt es ein Problem. Wir können die Dateien über den Docker-Host ändern, um die Dateien im Container wirksam zu machen. Dasselbe gilt umgekehrt. Der Container kann den Inhalt im Host-Dateisystem ändern. Um dieses Problem zu lösen, können wir beim Erstellen des Containers die Berechtigungen des Mount-Verzeichnisses konfigurieren, z. B. die folgenden schreibgeschützten Berechtigungen:

[root@localhost ~]# echo "hello nginx" >  /nginx/html/index.html
[root@localhost ~]# curl 172.17.0.4
hello nginx

Wenn wir also Bind Mount verwenden, müssen Sie wissen, dass Sie das Host-Dateisystem bedienen Folgendes:

Welchen Inhalt enthält das von Ihnen gemountete Verzeichnis, um andere Anwendungen nicht zu beeinträchtigen?

Ob Ihr Container die Berechtigung zum Betreiben dieser Verzeichnisse haben soll.

3.Volumes-Datenvolumes

Volume-Speichervolumes werden von Docker erstellt und verwaltet. Wir können den Docker-Volume-Create-Befehl verwenden, um Volumes explizit zu erstellen, oder Volumes erstellen, wenn der Container erstellt wird.

docker run -dt -v /nginx/html:/usr/share/nginx/html:ro --name nginx nginx
Sie können sehen, dass sich der Mount-Punkt im Stammverzeichnis von Docker /var/lib/docker/volumes befindet.

Verwenden Sie Docker Volume rm/prune, um ein einzelnes oder alle nicht verwendeten Volumes zu löschen. Sie können den Docker-Befehl zum Verwalten verwenden die Lautstärke. Ein Vorteil von Bind-Mounts.

[root@localhost ~]# docker volume create nginx_volume
nginx_volume
[root@localhost volumes]# docker inspect  nginx_volume
[
    {
        "CreatedAt": "2021-08-12T01:58:04-04:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx_volume/_data",
        "Name": "nginx_volume",
        "Options": {},
        "Scope": "local"
    }
]

Wenn die Quelle der Container-Montage beim Erstellen des Containers nicht angegeben wird, erstellt Docker automatisch ein anonymes Volume für uns, das sich ebenfalls im Docker-Stammverzeichnis befindet.

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     owncloud-docker-server_files
local     owncloud-docker-server_mysql
local     owncloud-docker-server_redis
[root@localhost ~]# docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
owncloud-docker-server_files
owncloud-docker-server_mysql
owncloud-docker-server_redis

Total reclaimed space: 199.4MB

Nachdem wir ein Mount-Volume erstellt haben, stimmt der Speicher zu diesem Zeitpunkt mit Bind-Mounts überein. Wenn der Docker-Host jedoch eine bestimmte Verzeichnis- oder Dateistruktur nicht garantieren kann, kann uns das Volume dabei helfen, die Konfiguration des Docker-Hosts mit der zu kombinieren Containerlaufzeit. Wenn wir Daten von einem Docker-Host auf einen anderen sichern, wiederherstellen oder migrieren müssen, ist das Volume auf diese Weise sehr praktisch und kann von den Einschränkungen des Hostpfads getrennt werden.

Bei der Verwendung von Bind-Mounts und Volumes müssen wir die folgenden Propagierungsabdeckungsprinzipien beachten:

Beim Mounten eines leeren Volumes: Der Inhalt des Verzeichnisses im Container wird auf das Volume propagiert (kopiert).

Beim Binden eines gemounteten oder nicht leeren Volumes: Der Inhalt des Verzeichnisses im Container wird durch das Volume oder das gebundene Hostverzeichnis überschrieben. Welche Möglichkeiten der Docker-Speicherung gibt es?

4.tmpfs mount

tmpfs mount ist nur für Linux-Hosts verfügbar. Wenn wir tmpfs mount zum Erstellen eines Containers verwenden, kann der Container Dateien außerhalb der beschreibbaren Ebene des Containers erstellen. Behalten Sie die Daten im Speicher und wenn der Container gestoppt wird, werden auch die geschriebenen Daten entfernt. Wird hauptsächlich zur temporären Speicherung vertraulicher Dateien verwendet, die nicht auf der beschreibbaren Ebene des Hosts oder Containers verbleiben sollen.

Mounten Sie einen Speicherblock über die Option --tmpfs.

[root@localhost volumes]# docker run -dt -v /usr/share/nginx/html --name nginx_with_volume nginx
d25bdfce9c7ac7bde5ae35067f6d9cf9f0cd2c9cbea6d1bbd7127b3949ef5ac6
[root@localhost volumes]# docker volume ls 
DRIVER    VOLUME NAME
local     d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980
local     nginx_volume
[root@localhost volumes]# ls /var/lib/docker/volumes/
backingFsBlockDev  d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980  metadata.db  nginx_volume

Geben Sie Parameter in die Methode --mount ein, um die Größe des temporären Speichers anzugeben.

docker run -dt --name busybox_tmpfs --tmpfs /etc/running busybox

Speicherdatenfreigabe

在容器之间共享数据主要有两种方法,第一种比较简单,只需要将目录或者volume挂载到多个容器中即可。这里不做赘述,我们来看一下通过中间容器实现共享的方式。

我们创建一个中间容器,包含绑定挂载目录和一个卷。

docker create -v /share:/volume1 -v /volume2  --name volume_share  busybox

在我们需要共享的容器中通过选项--volumes-from拿过来用即可

docker run -d -t --volumes-from volume_share  --name container1  busybox

我们inspect检查一下Mounts字段,此时container1已经挂载到了一个bind目录和一个volume

"Mounts": [
    {
        "Type": "bind",
        "Source": "/share",
        "Destination": "/volume1",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    },
    {
        "Type": "volume",
        "Name": "21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e",
        "Source": "/var/lib/docker/volumes/21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e/_data",
        "Destination": "/volume2",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

推荐学习:《docker视频教程

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten der Docker-Speicherung gibt es?. 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
docker中rm和rmi有什么区别docker中rm和rmi有什么区别Jul 14, 2022 am 11:02 AM

docker中rm和rmi的区别:rm命令用于删除一个或者多个容器,而rmi命令用于删除一个或者多个镜像;rm命令的语法为“docker rm [OPTIONS] CONTAINER [CONTAINER...]”,rmi命令的语法为“docker rmi [OPTIONS] IMAGE [IMAGE...]”。

docker官方镜像有哪些docker官方镜像有哪些May 12, 2022 pm 02:23 PM

docker官方镜像有:1、nginx,一个高性能的HTTP和反向代理服务;2、alpine,一个面向安全应用的轻量级Linux发行版;3、busybox,一个集成了三百多个常用Linux命令和工具的软件;4、ubuntu;5、PHP等等。

docker是免费的吗docker是免费的吗Jul 08, 2022 am 11:21 AM

docker对于小型企业、个人、教育和非商业开源项目来说是免费的;2021年8月31日,docker宣布“Docker Desktop”将转变“Docker Personal”,将只免费提供给小型企业、个人、教育和非商业开源项目使用,对于其他用例则需要付费订阅。

docker容器重启后数据会丢吗docker容器重启后数据会丢吗Jun 17, 2022 am 10:41 AM

docker容器重启后数据会丢失的;但是可以利用volume或者“data container”来实现数据持久化,在容器关闭之后可以利用“-v”或者“–volumes-from”重新使用以前的数据,docker也可挂载宿主机磁盘目录,用来永久存储数据。

什么是docker最早支持的存储引擎什么是docker最早支持的存储引擎May 12, 2022 pm 03:27 PM

AUFS是docker最早支持的存储引擎。AUFS是一种Union File System,是文件级的存储驱动,是Docker早期用的存储驱动,是Docker18.06版本之前,Ubuntu14.04版本前推荐的,支持xfs、ext4文件。

docker存储空间不足怎么办docker存储空间不足怎么办Jul 22, 2022 pm 03:44 PM

解决方法:1、停止docker服务后,利用“rsync -avz /var/lib/docker 大磁盘目录/docker/lib/”将docker迁移到大容量磁盘中;2、编辑“/etc/docker/daemon.json”添加指定参数,将docker的目录迁移绑定;3、重载和重启docker服务即可。

docker能安装oracle吗docker能安装oracle吗Jul 08, 2022 pm 04:07 PM

docker能安装oracle。安装方法:1、拉取Oracle官方镜像,可以利用“docker images”查看镜像;2、启动容器后利用“docker exec -it oracle11g bash”进入容器,并且编辑环境变量;3、利用“sqlplus /nolog”进入oracle命令行即可。

docker中的镜像会自动更新吗docker中的镜像会自动更新吗Jun 22, 2022 pm 04:23 PM

docker中的镜像会自动更新;可以利用Watchtower工具来自动更新镜像,Watchtower是一个可以监控正在运行的容器镜像是否更新的工具,当本地镜像与远程镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重新创建一个新的容器,并删除旧的容器。

See all articles

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)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.