学习优先级:★★★★☆

易用性:★★★☆☆

在 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 卷将数据存储在容器文件系统之外,因此即使在容器重启或删除后,数据也会保留。卷特别适合保存状态数据,如数据库文件或配置文件。