关于Docker部署postgresql数据库的问题

环境

Centos-7

Postgresql-10

docker-19

yum加载Postgresql

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y  

查看Postgresql版本

yum list | grep postgresql

下载Postgresql镜像

#拉取得是版本10
docker pull postgres:10

postgis扩展的postgresql组合版本:

使用kartoza/postgis镜像安装:

#书写格式
kartoza/postgis:[postgres_version]-[postgis-version]
11.0-2.5
10.0-2.4
9.6-2.4
# 例如:拉取 postgresql 9.6 版本以及postgis 2.4 版本
docker pull kartoza/postgis:9.6-2.4

或参照DockerFile构建镜像:https://www.jb51.net/article/115422.htm

DockerFile运行命令

# -f DockerFile路径 -t 自定义镜像名称 不要忘记 .
docker build -f /docker/dockerfile/mycentos -t mycentos .

创建宿主机映射sql目录

#这里我在var/lib/下创建
mkdir /var/lib/PostgreSqlData

构建镜像

#镜像名称修改(docker tag 镜像ID 自定义名称)
docker run --name my_postgres -v /home/data:/var/lib/postgresql -e POSTGRES_PASSWORD=****** -d -p ****:5432 postgres 

--name : 自定义容器名称

-v :进行映射,本地目录:容器内路径

POSTGRES_PASSWORD:数据库密码

-p:映射端口,宿主机端口:容器端口

最后是 镜像名称:端口号

这里有个简便的命令

docker run -d --name postgres --restart always -e POSTGRES_USER='postgres' -e POSTGRES_PASSWORD='abc123' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql -p 5432:5432 -t postgis
  • -e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了
  • -e POSTGRES_USER=abcuser 用户名
  • -e POSTGRES_PASS=‘abc123’ 指定密码

进入postgres容器

docker exec -it 容器ID bash

更新软件源

#更新软件源列表
apt-get update
#安装vim
apt-get -y install vim 

配置远程访问

#切换到目录/var/lib/postgresql/data
cd /var/lib/postgresql/data

编辑postgresql.conf文件

#修改:在所有IP地址上监听,从而允许远程连接到数据库服务器:
listening_address: '*'

编辑pg_hba.conf文件

#添加或修改:允许任意用户从任意机器上以密码方式访问数据库,把下行添加为第一条规则:
host    all             all             0.0.0.0/0               md5

修改编码格式

update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'basemap'

查看pg版本

show server_version;
# 或者
select version();

尝试登录

#登录数据库
psql -U postgres -W

重点:报错 psql: FATAL: Peer authentication failed for user "postgres"

问题一:

#peer(不可信),trust(可信),md5(加密)

修改 /etc/postgresql/10/main/pg_hba.conf 文件

找到下面这行

local   all             postgres                                peer

修改成md5(加密) (或改成 trust(可信))

local   all             postgres                                md5

问题二:

切换操作用户

#切换成postgres用户
su postgres

尝试登录,成功。

重启容器

docker restart 容器name

完成!

推荐github路径:postgres+postgis多版本部署DockerFile文件集:https://github.com/postgis/docker-postgis

到此这篇关于Docker部署postgresql数据库的文章就介绍到这了,更多相关Docker部署postgresql内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 用docker运行postgreSQL的方法步骤

    1. 安装docker: 参考网址: Docker入门安装教程(小白篇) linux上安装Docker(非常简单的安装方法) 2. 拉取postgreSQL的docker镜像文件:docker pull postgres:12.1 3. 创建 docker volume,名字为"dv_pgdata"(其实可以省略手动创建,直接跑下一步,docker也会自动创建的):docker volume create dv_pgdata 4. 启动容器,用-v来指定把postgres的数据目录映射

  • docker部署访问postgres数据库的实现方法

    目录 部署与访问 启用日志 如果需要修改pg配置 重启pg 代码&外部连接时注意(温馨提示) 部署与访问 宿主机创建postgres用户: adduser postgres 拉取镜像,此处以12.1版本为例: docker pull postgres:12.1 创建所用的卷 docker volume create pgdata_test_env 启动(密码为123456): docker run --user=0 -p 45565:5432 -d --name pg_test --restar

  • Docker中运行PostgreSQL并推荐几款连接工具

    1 前言 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统.POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中.PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询.外键.触发器.视图.事务完整性.多版本并发控制等.同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型.函数.操作符.聚集函数.索引

  • Docker启动PostgreSQL时创建多个数据库的解决方案

    1 前言 在文章<Docker启动PostgreSQL并推荐几款连接工具>中我们介绍如何通过Docker来启动PostgreSQL,但只有一个数据库,如果想要创建多个数据库在同一个Docker容器上怎么办呢? 2 两种方案 一种方案是把shell/sql脚本放入/docker-entrypoint-initdb.d/目录中,让容器启动的时候自动执行创建:另一种是通过shell脚本指定创建,本质是一样的.这里只介绍第一种. 把shell脚本或sql脚本放入指定目录,就会自动执行,两种脚本都可以.

  • docker环境下数据库的备份(postgresql, mysql) 实例代码

    posgresql 备份/恢复 1.备份 DATE=`date +%Y%m%d-%H%M` BACK_DATA=xxapp-data-${DATE}.out # 这里设置备份文件的名字, 加入日期是为了防止重复 docker exec pg-db pg_dumpall -U postgres > ${BACK_DATA} # pg-db 是数据库的 docker 名称 2.恢复 docker cp ${BACK_DATA} pg-db:/tmp docker exec pg-db psql -U

  • 本地Docker安装Postgres 12 + pgadmin的方法 (支持Apple M1)

    介绍 项目最近要升级Posgres数据库, 从9.6升级到12+.为了做一些migration测试,我本地要安装几个版本的Postgres,最方便的就是 用Docker安装了,没有版本冲突的问题,好管理,方便删除. 另外建议使用docker-compose,或者stack,简单说就是可以data存在本地,这样每次重新启动,数据不会丢,可以重复使用.如果 是做integration testing,则可以每次启动一个新的DB. 下面docker-compose文件里面还有pgAdmin,这样使用P

  • docker安装并持久化postgresql数据库的操作步骤

    安装docker步骤略过 1.拉取postgresql镜像 docker pull postgresql 2.创建本地卷,数据卷可以在容器之间共享和重用,默认会一直存在,即使容器被删除(docker volume inspect pgdata可查看数据卷的本地位置) docker volume create pgdata 3.启动容器 docker run --name postgres2 -e POSTGRES_PASSWORD=password -p 5432:5432 -v pgdata:

  • Docker环境下升级PostgreSQL的步骤方法详解

    前段时间接到了要升级数据库的需求,在公司大佬的指导下搞定了升级的方案,在此记录一下. 查阅PostgreSQL 官方文档 可以得知,官方提供了两种方式对数据库进行升级--pg_dumpall与pg_upgrade. pg_dumpall是将数据库转储成一个脚本文件,然后在新版数据库中可以直接导入.这种方式操作简单,跟着官方文档就能轻松操作,但是明显只适用于数据量较少的情况,在我的测试环境里,导入一个2g的数据库用了将近10分钟. 所以我这里选用的是 pg_upgrade,这种方式是直接将数据文件

  • 关于Docker部署postgresql数据库的问题

    环境 Centos-7 Postgresql-10 docker-19 yum加载Postgresql yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y 查看Postgresql版本 yum list | grep postgresql 下载Postgresql镜像 #拉取得是版本10 docker pull post

  • 使用Docker部署openGauss国产数据库的操作方法

    目录 一.openGauss介绍 1.openGauss简介 2.openGauss产品定位 3.支持的架构和操作系统版本 二.检查宿主机环境 1.检查系统版本 2.检查Docker状态 三.下载openGauss镜像 1.进入docker官方镜像仓库 2.openGauss镜像介绍 3.下载openGauss镜像 四.创建openGauss单节点容器 1.创建数据目录 2.创建openGauss容器 3.查看openGauss容器状态 4.连接测试openGauss 5.外部远程连接 五.创建

  • Docker安装部署Redis数据库的实现步骤

    目录 1,拉取镜像 2,创建数据卷 3,创建并编写配置文件 4,创建并启动容器 通过Docker部署Redis,比起我们自己编译安装的方式,会更加方便容易管理.今天就来简单分享一下使用Docker部署Redis数据库. 1,拉取镜像 通过下列命令: docker pull redis 2,创建数据卷 通常,类似于MySQL,Redis作为数据库,我们最好还是需要将其配置和数据等等挂载到数据卷以持久化到宿主机. 仍然是使用具名挂载的方式方便管理. docker volume create redi

  • centos6使用docker部署redis主从数据库操作示例

    本文实例讲述了centos6使用docker部署redis主从数据库操作.分享给大家供大家参考,具体如下: 目录结构: /redis /Dockerfile /Readme /redis-3.2.8.tar.gz /start.sh Dockerfile: FROM centos MAINTAINER qiongtao.li hnatao@126.com ADD ./redis-3.2.8.tar.gz /opt ADD ./start.sh /opt/start_redis.sh RUN ec

  • postgresql数据库安装部署搭建主从节点的详细过程(业务库)

    操作系统 64位CentOS 7 数据库搭建 一 业务数据库搭建 1. 安装 yum源(服务器可访问互联网时用) yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 2. 安装客户端 yum install postgresql11 –y 3. 安装服务端 yum install postgresql11-serve

  • Docker安装部署分布式数据库 OceanBase的详细过程

    目录 前言 ️ 1.什么是OceanBase ️ 2.硬件要求 ️ 3.docker部署OceanBase 3.1 下载ob docker镜像 3.2 创建容器 3.3 obd工具查看集群及启动 3.4 登录ob数据库并创建租户 3.5 登录obmysql tenant并创建数据库及表等 前言 快速的体验 OceanBase 的 自动化部署过程,以及了解 OceanBase 集群安装成功后的目录特点和使用方法 ️ 1.什么是OceanBase OceanBase是由蚂蚁集团完全自主研发的国产原生

随机推荐