備份基于Docker的PostgreSQL數據庫

wn25 9年前發布 | 24K 次閱讀 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:wheezy

RUN 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!