postgresql - 如何从不再存在的数据中清除 docker 卷?
问题描述
我提前道歉,因为由于我缺乏 docker 知识,我会说一些不正确的东西。
所以我想将 postgres 数据库连接到我的 IDE pycharm。
我决定从 docker hub 部署 postgres 映像并使用以下命令创建 docker 容器:
docker run --name PSTGRS -p 5432:5432 -v /home/****/Desktop/pagila-master:/var/lib/postgresql/data -e GRANT_SUDO=yes -e POSTGRES_PASSWORD=password postgres
使用-v
标志我已将标准卷绑定/var/lib/postgresql/data
到我的某些文件夹。我在那个文件夹中有一些数据库和表,当我将数据库连接到我的 IDE 时它工作正常。
但最近我删除了我的文件夹、postgres 容器、postgres 映像和所有相关卷。我使用docker prune volume
了命令,然后确保使用docker volume ls
命令没有留下任何卷。
问题是即使我从 docker hub 提取了新的 postgres 映像并创建了新容器并将卷绑定到另一个空文件夹,当我通过数据库连接到我的 IDE 时,它仍然显示以前不存在的表。
所以我的问题是如何解决它?如何摆脱那些我什至不知道在哪里找到的文件?
先谢谢你了!
解决方案
您已经创建了一个 Docker绑定挂载。由于规范的左侧volumes:
是完整路径,因此数据库文件位于主机.../Desktop/pagila-master
目录中。它们不是由docker volume
;管理的。您可以使用普通命令删除这些rm
(可能需要sudo
根据所有权进行访问)。
如果您确实想docker volume
管理这些,您需要一个命名卷。从语法上看,这看起来像一个没有斜杠的简单名称。存储将位于 Docker 的本地文件系统空间内,您不应尝试直接访问它(在 MacOS 和 Windows 系统上几乎不能),这可能会影响您选择使用哪个。
docker volume create pagila-master
docker run -v pagila-master:/var/lib/postgresql/data ... postgres
# ^^^^^^^^^^^^^ just the volume name
# not a complete filesystem path
docker stop PSTGRS # the docker run --name name
docker rm PSTGRS
docker volume rm pagila-master
推荐阅读
- swift - 检测 UIPickerView 何时开始更改/移动
- node.js - 节点-P2P Webrtc-Star
- python - pandas.plot 在 MacBook 上没有显示任何图形
- node.js - 在子域中托管多个节点 app.js
- data-structures - 存储和打印字符、频率对的最有效算法是什么?
- apt - 无法进行 apt 更新,我得到了禁止的 403 错误
- mysql - 如何在mysql单查询中删除具有外键约束的记录
- xml - 用 XML 描述图
- laravel-5 - Laravel + Vue 页面重定向
- jekyll - 如何防止我的 github 页面将帖子标题设为“标题大小写”