我是新來的碼頭工人。我仍然試圖把我的頭圍繞着這一切。我該如何使用Postgresql docker鏡像/容器?
我建立一個節點的應用程序(REST API),使用PostgreSQL來存儲我的數據。
我花了幾天的學習泊塢窗,但我不知道我是否做的事情,我應該的方式。
因此,這裏是我的問題:
我使用的是正式的Postgres泊塢窗9.5圖像爲基礎,以建立自己的(我Dockerfile只增加plpython在它的上面,並安裝一個定製的Python模塊用於plpython存儲過程中)。我建立了我的容器作爲suggedsted Postgres的圖像文檔:
搬運工運行--name一些-的Postgres -e POSTGRES_PASSWORD = mysecretpassword Postgres的-d
後,我停止容器再次使用上述命令我不能運行,因爲容器已經存在。所以我使用docker start而不是docker run來啓動它。這是做事情的正常方式嗎?我通常會第一次使用碼頭運行並且碼頭每隔一段時間啓動一次?
持久性:我創建了一個數據庫,並填充它的運行容器上。我使用pgadmin3進行連接。我可以停止並啓動容器,數據仍然存在,但我不確定這是爲什麼發生的。我可以在正式的Postgres圖像將卷創建(VOLUME的/ var/lib中/ PostgreSQL的/數據)的Dockerfile看到的,但我不知道這是持久性工作的原因。你能否簡單地解釋一下(或者指出一個解釋)這一切是如何運作的?
架構:從我讀,似乎對於這種應用程序最合適的架構,可運行3個獨立的容器中。一個用於數據庫,一個用於保存數據庫數據,另一個用於節點應用程序。這是做這件事的好方法嗎?如何使用數據容器改善事情? AFAIK我目前的設置工作正常,沒有一個。
還有什麼我要atention什麼?
感謝
編輯:增加了我的困惑,我只是跑一個新的容器從Debian官方照片(不Dockerfile,只是碼頭工人運行-i -t -d --name debtest的debian /箱/ bash)的。隨着容器在後臺運行,我使用docker attach debtest連接到它,然後進入apt-get安裝postgresql。一旦安裝,我運行(仍然在容器內)psql,並在默認的postgres數據庫中創建一個表,並用1條記錄填充它。然後我退出了外殼,並且由於外殼不再運行,容器自動停止。我使用docker start debtest啓動了容器,然後連接到它並最終再次運行psql。自第一次運行以來,我發現一切都持續存在。 Postgresql被安裝,我的表在那裏,而且我的插入記錄也在那裏。我真的很困惑,爲什麼我需要一個VOLUME來保存數據,因爲這個快速測試沒有使用一個,所有的apears都能正常工作。我在這裏錯過了什麼嗎?
再次感謝
您認爲持久性容器是個好主意! –
@RobertGrant取決於你的情況。在某些情況下,它可能已經足夠好了,有時候您可能希望擁有主機卷。有些設置完全禁止卷。 –
這似乎是一個邊緣情況下,而不是在答案中沒有一個大的警告標誌應該寫的東西。 –