我有一个 docker-compose 文件,可以启动多个服务。我刚刚收到一条错误消息,指出我的磁盘空间不足,因此我输入“docker system df”并看到我有 21 个卷。如果我有 3 个 docker 容器,每个容器都附加一个卷,为什么它显示的卷总数为 21 个?
我正在使用 AWS EC2。这是我的撰写文件,我设置卷的方式有什么问题吗?当我关闭并重新启动时,postgres 数据得到保留,我只是对卷大小和由于 T2 Large 实例上没有空间而无法重建的消息感到困惑。
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
Docker 镜像的 Dockerfile 可以包含VOLUME https://docs.docker.com/engine/reference/builder/#volume指示。这是一条给 Docker 的指令,告诉它某个容器目录包含需要持久化的数据,并且 Docker 应该始终确保在该目录上挂载某种类型的卷。
更具体地说,postgres
image declares https://github.com/docker-library/postgres/blob/a83005b407ee6d810413500d8a041c957fb10cf0/14/bullseye/Dockerfile#L180
VOLUME /var/lib/postgresql/data
您的 Compose 设置不会在该特定目录上安装任何内容。因此,Docker 创建一个匿名卷并将其安装在那里。这不是特定于postgres
图像和堆栈中的其他容器可能具有类似的本地数据目录。那些匿名卷就是你在docker system df
输出 (docker volume ls
也会向他们展示)。
In 稍后的问题 https://stackoverflow.com/questions/70673547/volumes-being-created-anonymously-instead-of-named-and-re-created-on-every-compo您还注意到 Compose 无法找到这些匿名卷,最好不要依赖此功能。确保您通过 Compose 为这些数据目录安装主机目录或命名卷volumes:
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)