【问题标题】:Docker creates a new volume everytime I do docker compose up每次我做 docker compose up 时,Docker 都会创建一个新卷
【发布时间】:2022-01-12 06:02:00
【问题描述】:

我有一个启动多个服务的 docker-compose 文件。我刚刚收到一条错误消息,指出我的磁盘空间不足,所以我输入“docker system df”并看到我有 21 个卷。如果我有 3 个 docker 容器,每个容器都附加了一个卷,为什么它向我显示总数为 21 个卷?

我正在使用 AWS EC2。这是我的撰写文件,我设置卷的方式有什么问题吗?当我关闭并重新启动时,postgres 数据保持不变,我只是对卷大小和由于 T2 大型实例上没有空间而无法重建的消息感到困惑。

version: "3"
services:
  nftapi:
    env_file:
      - .env
    build:
      context: .
    ports:
      - '443:5000'
    depends_on: 
      - postgres
    volumes: 
      - .:/app
      - /app/node_modules
    networks:
      - postgres
      
  postgres:
    container_name: postgres
    image: postgres:latest
    ports:
    - "5432:5432"
    volumes:
    - /data/postgres:/data/postgres
    env_file:
    - docker.env
    networks:
    - postgres
 
  pgadmin:
    links:
    - postgres:postgres
    container_name: pgadmin
    image: dpage/pgadmin4
    ports:
    - "8080:80"
    volumes:
    - /data/pgadmin:/root/.pgadmin
    env_file:
    - docker.env
    networks:
    - postgres
 
networks:
  postgres:
    driver: bridge

【问题讨论】:

  • 应用程序的node_modules 目录的匿名卷看起来很奇怪,尤其是在 EC2 上:你不想用匿名卷覆盖图像的库树,而且你通常不想推送云部署的应用程序源与其 Docker 映像分开。不过,这是您显示的唯一非绑定安装卷。您的图像是否声明了不必要的 VOLUME,这会导致创建更多匿名卷?

标签: amazon-web-services docker amazon-ec2


【解决方案1】:

如果您的主容器已启动并正在运行,则运行

docker volume prune

它应该删除任何容器分离或未使用的任何卷 我养成了在我的 aws 实例上定期运行的习惯

docker system prune

【讨论】:

    【解决方案2】:

    Docker 映像的 Dockerfile 可以包含 VOLUME 指令。这是给 Docker 的一条指令,告诉它某个容器目录包含需要持久化的数据,并且 Docker 应始终确保将某种卷挂载在该目录上。

    更具体地说,postgres 图像 declares

    VOLUME /var/lib/postgresql/data
    

    您的 Compose 设置不会在该特定目录上挂载任何内容。因此,Docker 创建了一个匿名卷并将其挂载在那里。这并不特定于 postgres 图像,并且您堆栈中的其他容器可能具有类似的本地数据目录。这些匿名卷就是您在docker system df 输出中看到的(docker volume ls 也会显示它们)。

    a later question 中,您还注意到 Compose 无法找到这些匿名卷,最好不要依赖此功能。确保您通过 Compose volumes: 为这些数据目录安装主机目录或命名卷。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2018-12-18
      相关资源
      最近更新 更多