Docker如何向正在运行的容器添加卷?

时间:2014-11-12 00:41:12

标签: postgresql ubuntu docker

我在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)?还是其他任何替代方案?

2 个答案:

答案 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脚本也可能有用,但老实说我还没试过。