2017-02-14 47 views
2

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

但是,当我尝试使用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

+0

做不能执行'苏 - Postgres的-c“pg_ctl stop''? –

+0

这告诉我:“pg_ctl:directory”/ var/lib/postgresql/data“不是数据库集群目录” – Richard

+0

然后,你需要确定PostgreSQL数据目录的位置,并通过'-D'开关指定。你没有读过'pg_ctl'文档吗? –

回答

5

安装在容器中的tmpfs和它

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

注意默认tmpfs的大小点PostgreSQL数据:


,如果你想尝试这个命令来启动容器是65536k,用size=Nk来修改它。

--tmpfs /pgtmpfs:size=131072k 

同样可以为MySQL

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

你知道如何用'MySQL'吗? –

+0

@CodaChang添加了一个mysql示例 – Matt

+0

谢谢,它运行完美。但是,如何确保它在RAM磁盘上运行? –