分享

备份基于Docker的PostgreSQL数据库

徐超 发表于 2015-1-23 20:14:28 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 19324
问题导读
1、怎样备份基于Docker的PostgreSQL数据库?
2、如何直接在PostgreSQL的容器中制作包含pg_dump容器?
3、你是如何使用Docker的?




【编者的话】

本文属于基础入门类文章,作者介绍了如何备份基于Docker的PostgreSQL数据库。通过本文你可以学习到Docker容器的构建以及运行命令,并带你复习Docker容器的基本原理。

我发现,很多初学者都很关心Docker能否解决现有的一些问题,当然之前的解决方案也仍可以用。所以这篇文章的主题是使用Docker备份你的关系型数据库。我会通过具体的例子来介绍如何使用Docker来备份PostgreSQL。

如果你有一个运行在Docker中的PostgreSQL服务,我想说能把这两个非常酷的软件结合起来真的很赞。但是你是一个聪明的人,你知道你需要备份自己的数据库。但是怎么做了?PostgreSQL运行在Docker中,外界无法访问容器内的数据。

简单来说,你可以在PostgreSQL实例上运行pg_dump。具体到现在的问题,你可以用三种方式来运行:
第一,在容器内。根据你的Docker版本,使用nsenter或docker exec在容器内运行Shell命令,并将dump的数据共享到volume:
  1. docker exec postgres pg_dump -h db -f /shared/backup.sql
复制代码

但我们可以做的更好,理想的流程是无需在容器内启动Shell即可直接连接到PostgreSQL。有两种方式可以实现:
其一,可以使用容器化的方式。创建一个pg_dump容器,并在运行时将其连接到PostgreSQL容器。下面是pg_dump容器的Dockerfile:
  1. FROM debian:wheezy
  2. RUN apt-get update -y && \
  3. apt-get install -y postgresql-client && \
  4. apt-get clean -y
  5. ENTRYPOINT ["/usr/bin/pg_dump"]
复制代码

使用docker build命令来构建:
  1. $ docker build -t pg_dump - < Dockerfile
复制代码

注意:并不是一定要构建一个运行pg_dump的容器,你可以直接在PostgreSQL的容器中包含pg_dump容器的功能。我们这里只是为了练习。
构建完毕并运行:
  1. $ docker run -it --link postgres:db pg_dump -h db
复制代码

另外一个解决方案是Docker暴露容器的5342端口,我们直接运行pg_dump命令。

原文链接:Backuping PostgreSQL with Docker

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条