2017-02-14 50 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磁盤上運行? –