学习优先级:★★★★☆
易用性:★★★☆☆
在 Docker Compose 中,多个容器可以使用同一个卷来共享数据。这在需要多个容器访问相同文件时非常有用,例如在开发或生产环境中,数据需要在容器之间共享。
以下是一个示例,展示了如何让两个容器使用同一个卷来共享数据。这通常用于数据库容器和应用代码。
示例代码
version: '3'
services:
web:
image: nginx
volumes:
- shared_data:/usr/share/nginx/html
app:
image: busybox
volumes:
- shared_data:/data
command: sh -c "echo 'Hello, World!' > /data/index.html"
volumes:
shared_data:
执行结果
在 app 容器中,index.html 文件被创建并写入内容 "Hello, World!",然后保存在 shared_data 卷中。web 容器通过 Nginx 服务显示此文件作为静态网站。
在这个示例中,创建了一个名为 shared_data 的卷,由两个容器使用。app 容器将 HTML 文件写入卷中,而 web 容器通过 Web 服务器提供此文件。这样,两个容器可以共享相同的数据,而无需直接通信。这是在多个服务之间持久化共享数据的常用方法。
补充说明
Docker 卷将数据存储在容器文件系统之外,因此即使在容器重启或删除后,数据也会保留。卷特别适合保存状态数据,如数据库文件或配置文件。