拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在 Docker Compose 中的多个容器之间共享卷

在 Docker Compose 中的多个容器之间共享卷

白鹭 - 2022-07-05 2452 0 2

一、概述

Docker 容器是隔离的环境。 然而,容器有时需要持久化和共享数据。 当第二个容器需要访问共享缓存或使用数据库数据时,可能会发生这种情况。 我们可能还需要对用户生成的数据进行备份或操作。

在这个简短的教程中,我们将通过一个使用 Docker Compose 的示例来了解如何在 Docker 容器之间共享数据。

2. 使用 Docker 存储持久化和共享数据

当容器运行时,所有文件都会获得一个可写空间。 但是,一旦我们停止容器,它们就不再存在。

如果我们需要保存数据, Docker使用具有持久性和内存选项的存储。

存储文件还可以提高性能,因为它直接写入主机文件系统,而不是使用容器的可写层。

2.1。 Docker 卷

让我们快速浏览一下 Docker Volumes。 例如,让我们运行一个带有命名卷的 Nginx 容器。

首先,让我们创建我们的卷:

docker volume create --name volume-data

然后,让我们运行我们的容器:

docker run -d -v volume-data:/data --name nginx-test nginx:latest

在这种情况下,Docker将挂载在容器的文件夹中。 如果容器在要挂载的路径中有文件或目录,它也会将目录的内容复制到卷中。/data

我们还可以查看用于持久存储的bind mounts 。

2.2.与卷共享数据

当多个容器需要访问共享数据时,它们可以使用相同的卷运行。

例如,让我们启动我们的 Web 应用程序:

docker run -d -v volume-data:/usr/src/app/public --name our-web-app web-app:latest

Docker 默认创建一个卷。 但是,我们可以使用卷驱动器在多台机器之间共享数据。local

最后,Docker 也有–volumes-from来链接正在运行的容器之间的卷。 它可能有助于数据共享或更一般的备份使用。

3. 与 Docker Compose 共享数据

我们已经了解了如何使用 Docker 创建卷。 Docker Compose 还支持 YAML 模板定义中的[volumes](https://docs.docker.com/compose/compose-file/compose-file-v3/#volume-configuration-reference)关键词。

让我们创建一个来运行 Nginx 容器和我们的 Web 应用程序共享相同的卷:docker-compose.yml

services:
 nginx:
 container_name: nginx
 build: ./nginx/
 volumes:
 - shared-volume:/usr/src/app

 web-app:
 container_name: web-app
 env_file: .env
 volumes:
 - shared-volume:/usr/src/app/public
 environment:
 - NODE_ENV=production

 volumes:
 shared-volume:

同樣,在 Docker Compose 中,默認將是 。我們還可以指定用於此卷的驅動程序:driverlocal

volumes:
 db:
 driver: some-driver

我們可能還需要使用 Docker Compose 外部的捲:

volumes:
 data:
 external: true
 name: shared-data

4。 结论

在本文中,我们了解了如何使用卷共享 Docker 容器的数据。 我们还通过使用 Docker Compose 的简单示例看到了相同的概念。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *