备份基于Docker的PostgreSQL数据库

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

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

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

简单来说,你可以在PostgreSQL实例上运行pg_dump。具体到现在的问题,你可以用三种方式来运行:

第一,在容器内。根据你的Docker版本,使用nsenterdocker 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"]

使用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(翻译:采菊篱下 审校:李颖杰)

原文发布时间为:2015-01-04

本文作者:采菊篱下 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:备份基于Docker的PostgreSQL数据库

时间: 2024-09-14 03:40:41

备份基于Docker的PostgreSQL数据库的相关文章

基于Docker的PHP调用基于Docker的Mysql数据库_docker

docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 自从接触docker以来,一直想实现这种玩法.如下是步骤 1:建立基于docker的mysql,参考文章 Mac上将brew安装的MySql改用Docker执行 2:建立基于docker的php image 在当前目录,建立Dockerfile,内容如下 FROM php

PostgreSQL数据库备份还原命令

pg_dump备份数据 --只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了,如下例所示(根据您自己的安装路经更改PostgreSQL 路径):  代码如下 复制代码 xiaop@xiaop-laptop:~$ /usr/lib/postgresql/8.2/bin/pg_dump -D -h localhost -U xiaop(用户名) mydb(数据库名称) >  mydb.bak 通过上面的命令就会创建一个名为 mydb.bak的文件,文件中记录了用于恢复数据库的SQL命

备份-postgreSQL 数据库 同一张表不同数据的比较

问题描述 postgreSQL 数据库 同一张表不同数据的比较 我有一张表,一个是我前一段时间用的数据,一个是我现在用的数据,我想比较一下,这两张数据的不同.(表结构相同) 谢谢各位大神指导~谢谢. 解决方案 同一服务器,不同数据库之前的数据复制同一服务器上不同数据库之间同步表数据同一数据库中两个表中复制数据

从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database Service)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于飞天分布式系统和全SSD盘高性能存储,支持MySQL.SQL Server.PostgreSQL和PPAS(高度兼容Oracle)引擎,默认部署主备架构且提供了容灾.备份.恢复.监控.迁移等方面的全套解决方案. 当然,并不是指所有用户

基于Docker API的工具综述

本文讲的是基于Docker API的工具综述,[编者的话]考虑到过去三年Docker取得的骄人成绩以及远程API的成熟,毫无疑问,Docker会成为开发者的首选平台.随着Docker的发展壮大,开发者也共享了很多围绕Docker的开源项目,本文中将讨论这些项目是如何使用Docker API的. Docker是在虚拟容器中简易部署应用最前沿技术.之前我们已经知道Docker可以减少开发维护复杂度,使得正在成长中的架构得以实践.这种架构使得整个应用以及底层操作系统以轻量级容器方式创建和部署,而不是依

PostgreSQL 数据库初体验

  10月15日,由山东华鲁科技咨询顾问高强老师在"DBA+济南群"进行了一次关于PostgreSQL数据库初体验的线上主题分享.小编特别整理出其中精华内容,供大家学习交流.   嘉宾简介    高强,"DBA+济南群"联合发起人.现就职于山东华鲁科技发展股份有限公司.擅长Oracle.AIX.Linux.PostgreSQL和DB2等产品的实施.运维和故障处理.曾是一名存储工程师,负责实施存储.双机和备份等产品,在接触到数据库产品后,一发不可收拾的投入了DBA的浩

基于Docker的开发模式驱动持续集成落地实施

11月30日,资深质量优化专家陈能技老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的开发模式驱动持续集成落地实施"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢陈能技老师对DBA+社群给予的大力支持.    嘉宾简介   资深质量优化专家,12年软件测试与质量管理经验 <软件性能测试诊断分析与优化>等多本IT畅销书作者 演讲实录   今天主要交流的主题是基于Docker的开发模式如何驱动持续集成落地实施,这里会涉及两个主要的

postgresql数据库如何存储结构的教程

如果你升级数据库后无法启动 postgres 进程,并且检查日志发现类似如下信息: FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.2. 那就说明升级后的 PostgreSQL 改变了数据存储结构,导致旧版本的数据

搭建基于Docker的PHP开发环境的详细教程

  这篇文章主要介绍了搭建基于Docker的PHP开发环境的详细教程,Docker是当下虚拟机技术的最佳选择,需要的朋友可以参考下 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了. 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器