如何将Postresql移动到Docker中的RAM磁盘?

时间:2017-02-14 12:37:49

标签: postgresql docker

我想运行Docker镜像postgres:9,停止Postgres,将其移至/dev/shm,然后重新启动它,这样我就可以非常快速地运行我的应用程序测试。

但是当我尝试使用postgrespg_ctl在容器中停止Postgres时,我会被告知cannot be run as root

由于所有Docker容器都以root用户身份登录,我该怎么办才能运行我需要的Postgres命令?

在重新启动之前,我需要将哪些文件夹移至/dev/shm

如果你想尝试这个,启动容器的命令: docker run -it postgres:9 bash cd /usr/lib/postgresql/9.6/bin ./pg_ctl stop

1 个答案:

答案 0 :(得分:13)

在容器中装入tmpfs并将PostgreSQL数据指向该位置

docker run --tmpfs=/pgtmpfs -e PGDATA=/pgtmpfs postgres:9

注意默认的tmpfs大小为65536k,使用size=Nk进行修改。

--tmpfs /pgtmpfs:size=131072k

MySQL可以做同样的事情

docker run --tmpfs=/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:8