为何Portainer Docker Compose会创建新卷并忽略已创建的portainer_data卷?
问题原因及解决方案
问题出在你的Docker Compose配置中,volumes段的portainer_data没有声明为外部卷。当Compose启动时,它会默认创建一个属于当前Compose项目的命名卷,而非使用你预先创建的全局卷。
修复步骤
修改你的Compose文件,在volumes部分给portainer_data添加external: true配置,告知Compose该卷是已存在的外部卷,无需重新创建:
version: '3.3' services: portainer-ce: ports: - '8000:8000' - '9443:9443' container_name: portainer restart: unless-stopped command: -H tcp://agent:9001 --tlsskipverify volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data image: 'portainer/portainer-ce:latest' agent: container_name: agent image: portainer/agent:latest restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/volumes:/var/lib/docker/volumes ports: - "9001:9001" volumes: portainer_data: external: true # 添加该行配置
验证操作
- 停止并移除当前Portainer容器:
docker-compose down
- 应用修改后的配置启动服务:
docker-compose up -d
- 查看卷详情,确认Portainer正在使用你预先创建的
portainer_data卷:
docker volume inspect portainer_data
配置修改后,Compose会直接复用你之前创建的portainer_data卷,不会再生成新的同名卷。
内容的提问来源于stack exchange,提问作者Vaslo
相关产品推荐
相关产品推荐

