我在ubuntu docker容器中运行了一个PostgreSQL实例。我将数据库目录放在一个卷中,该卷也通过运行:
与主机系统共享sudo docker run -d -p 10001:5432 -v ~/logs/postgres:/var/log -v ~/postgres-data:/var/lib/postgresql/data --name db postgresql
但是,/var/lib/postgresql/data
变得越来越大,主机系统空间不足。有什么办法可以为正在运行的容器添加额外的卷吗?所以我可以在PG中创建一个表空间(http://www.postgresql.org/docs/9.3/static/manage-ag-tablespaces.html)?还是其他任何替代方案?
答案 0 :(得分:0)
因为您的文件可能只是存储在磁盘上/ var / lib / docker / [aufs | btrfs |?] / mnt,您应该像使用普通实例一样增加已安装卷的大小,您可能可以在正在运行的容器内安装另一个卷,但无论如何它都是黑客
答案 1 :(得分:0)
解决这个问题的方法是将容器提交到新映像,然后在指定新卷的情况下再次运行映像,我不知道它可能适用于您的情况,但它之前已经过测试:
很简单,您可以提交现有容器,然后使用新安装或卷运行它,请按照以下步骤操作:
从当前正在运行的容器中提交到新映像:
$ docker commit containerID newImageName
立即使用您需要的新卷运行新图像:
$ docker run -ti -v $(pwd)/dir1:/dir1 newImageName /bin/bash
还有一个描述here的bash脚本也可能有用,但老实说我还没试过。