備份基于Docker的PostgreSQL數據庫
【編者的話】本文屬于基礎入門類文章,作者介紹了如何備份基于Docker的PostgreSQL數據庫。通過本文你可以學習到Docker容器的構建以及運行命令,并帶你復習Docker容器的基本原理。
我發現,很多初學者都很關心Docker能否解決現有的一些問題,當然之前的解決方案也仍可以用。所以這篇文章的主題是使用Docker備份你的關系型數據庫。我會通過具體的例子來介紹如何使用Docker來備份PostgreSQL。
如果你有一個運行在Docker中的PostgreSQL服務,我想說能把這兩個非常酷的軟件結合起來真的很贊。但是你是一個聰明的人,你知道你需要備份自己的數據庫。但是怎么做了?PostgreSQL運行在Docker中,外界無法訪問容器內的數據。
簡單來說,你可以在PostgreSQL實例上運行pg_dump。具體到現在的問題,你可以用三種方式來運行:
第一,在容器內。根據你的Docker版本,使用nsenter或docker exec在容器內運行Shell命令,并將dump的數據共享到volume:
docker exec postgres pg_dump -h db -f /shared/backup.sql
但我們可以做的更好,理想的流程是無需在容器內啟動Shell即可直接連接到PostgreSQL。有兩種方式可以實現:
其一,可以使用容器化的方式。創建一個pg_dump容器,并在運行時將其連接到PostgreSQL容器。下面是pg_dump容器的Dockerfile:
FROM debian:wheezyRUN apt-get update -y && \ apt-get install -y postgresql-client && \ apt-get clean -y
ENTRYPOINT ["/usr/bin/pg_dump"]</pre>
使用docker build命令來構建:$ docker build -t pg_dump - < Dockerfile
注意:并不是一定要構建一個運行pg_dump的容器,你可以直接在PostgreSQL的容器中包含pg_dump容器的功能。我們這里只是為了練習。構建完畢并運行:
$ docker run -it --link postgres:db pg_dump -h db
另外一個解決方案是Docker暴露容器的5342端口,我們直接運行pg_dump命令。
原文鏈接:Backuping PostgreSQL with Docker(翻譯:采菊籬下 審校:李穎杰)
轉自:http://dockerone.com/article/118
本文由用戶 wn25 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!