学习优先级:★★★★☆

易用性:★★★☆☆

外部卷对于在容器和宿主机之间共享数据非常重要。在 Docker Compose 中,可以使用 volumes 指令将宿主机上的特定目录或数据绑定到容器中,以确保数据在容器重启后仍然可用。

volumes 指令允许将数据存储在容器外部,这样数据在容器重启时不会丢失。以下是一个示例,展示了如何在 Docker Compose 中定义外部卷。

示例代码

version: "3.8"

services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html  # 将本地目录绑定为卷

执行结果

运行此配置后,Nginx 网站在 http://localhost:8080 上显示,且在本地目录 ./html 中所做的所有更改都会直接反映在网页上。

在 Docker Compose 中使用外部卷特别有用,尤其是在需要在容器和宿主机之间交换数据时。这在 Web 应用程序中很常见,因为更改宿主机文件系统中的源代码应该在容器中直接可见,而无需重新创建容器。通过这种方式绑定卷,容器保持灵活性,更新也变得简单。

补充说明

外部卷也可以用于数据库,以持久化存储数据,使其在容器重启后仍然可用。Docker 支持两种主要类型的卷:

  • 绑定挂载(bind mounts):直接连接到宿主机的文件或目录。
  • Docker 管理的卷(Docker-managed volumes):由 Docker 子系统管理的卷。

这些卷类型提供了不同的数据持久化和共享选项,适用于不同的使用场景。