我想运行Docker镜像postgres:9
,停止Postgres,将其移至/dev/shm
,然后重新启动它,这样我就可以非常快速地运行我的应用程序测试。
但是当我尝试使用postgres
或pg_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 :(得分: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