基于Docker的PostgreSQL数据库的备份
发布日期:2016-4-14 21:4:2
基于Docker的PostgreSQL数据库的备份 我发现,很多初学者都很关心Docker能否解决一些现有的问题,当然之前的解决方案仍然可以用。所以这篇文章的主题是使用Docker备份你的关系型数据库。通过具体的例子来介绍如何使用Docker来备份PostgreSQL。 若你有一个运行在Docker中的PostgreSQL服务,我想说能把这两个非常酷的软件结合起来真的很棒。但你是一个聪明的人,你知道你需要备份自己的数据库。但怎么做了?PostgreSQL运行在Docker中,外界无法访问容器内的数据。 简单的来说,你可以在PostgreSQL实例上运行pg_dump。具体到现在的问题,你可以用三种方式来运行: 1.在容器内。根据你的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"] 使用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 注:后面的一些文章里会介绍一些关于mysql的问题,关注mysql的朋友稍作等待。
|