首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每次我做码头时,Docker都会创建一个新的卷。

每次我做码头时,Docker都会创建一个新的卷。
EN

Stack Overflow用户
提问于 2022-01-11 16:36:15
回答 2查看 1.2K关注 0票数 2

我有一个码头-撰写文件,它可以扩展几个服务。我刚刚收到一个错误,说明我没有磁盘空间,所以我输入了“”,并看到我有21个卷。如果我有3个码头集装箱,每个集装箱都有一个容量,为什么它给我显示了21卷的总数?

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

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

发布于 2022-01-11 22:02:00

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

更具体地说,postgres映像宣告

代码语言:javascript
运行
复制
VOLUME /var/lib/postgresql/data

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

稍后的问题中,您还注意到Compose很难找到这些匿名卷,最好不要依赖这个功能。确保您正在通过Compose volumes:为这些数据目录安装主机目录或命名卷。

票数 2
EN

Stack Overflow用户

发布于 2022-01-11 19:03:13

如果主容器已启动并运行,则运行

代码语言:javascript
运行
复制
docker volume prune

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

代码语言:javascript
运行
复制
docker system prune
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70670267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档