环境

Centos-7 

Postgresql-10

docker-19

yum加载Postgresql

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

查看Postgresql版本

  1. yum list | grep postgresql

 

下载Postgresql镜像

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

postgis扩展的postgresql组合版本:

使用 kartoza/postgis 镜像安装:

  1. #书写格式
  2. kartoza/postgis:[postgres_version]-[postgis-version]
  3. 11.0-2.5
  4. 10.0-2.4
  5. 9.6-2.4
  6.  
  7. # 例如:拉取 postgresql 9.6 版本以及postgis 2.4 版本
  8. docker pull kartoza/postgis:9.6-2.4

 或参照DockerFile构建镜像:https://github.com/postgis/docker-postgis

DockerFile运行命令

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

创建宿主机映射sql目录

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

构建镜像

  1. #镜像名称修改(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:映射端口,宿主机端口:容器端口

最后是 镜像名称:端口号

这里有个简便的命令

  1. 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容器

  1. docker exec -it 容器ID bash

更新软件源

  1. #更新软件源列表
  2. apt-get update
  3.  
  4. #安装vim
  5. apt-get -y install vim

配置远程访问

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

编辑postgresql.conf文件

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

编辑pg_hba.conf文件

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

修改编码格式

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

查看pg版本

  1. show server_version;
  2. # 或者
  3. select version();

尝试登录

  1. #登录数据库
  2. psql -U postgres -W

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

问题一:

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

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

找到下面这行

  1. local all postgres peer

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

  1. local all postgres md5

问题二:

切换操作用户

  1. #切换成postgres用户
  2. su postgres

尝试登录,成功。

重启容器

  1. docker restart 容器name

完成! 

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

Docker:Docker部署postgresql数据库的更多相关文章

  1. 在Centos上安装docker,部署mysql数据库

    何为docker? Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 本机环境 24小时不关机的Centos ...

  2. docker容器中Postgresql 数据库备份

    查看运行的容器: docker ps 进入目标容器: docker exec -u root -it 容器名 /bin/bash docker 中,以root用户,创建备份目录,直接执行如下命令, p ...

  3. Docker容器部署Mysql数据库服务器

    本节会用到的Docker命令如下: docker images 查看mysql镜像id docker run -d -p xxxxxxxxxxxxxxx/zhufc/mysql:v2 通过镜像生成 启 ...

  4. 【Linux】Linux下使用Docker快速部署Oracle数据库

    安装最新Docker wget -qO- https://get.docker.com/ | sh` 安装 docker-compose sudo curl -L https://github.com ...

  5. docker部署postgresql时,data目录不生效的问题探究

    今天用docker部署postgresql,用的是官方的镜像.结果挂载完 /var/lib/postgresql/data目录后,和容器里的目录其实并没有挂载成功. 母机上的目录并没有成功挂载到容器里 ...

  6. Docker安装带中文全文搜索插件zhparser的Postgresql数据库

    上一篇讲了在已经安装了PG数据库的情况下,安装全文搜索插件zhparser遇到的问题.在一个全新的环境中安装带有全文搜索插件zhparser的PG数据库,可以使用已经做好的Docker镜像,在安装的过 ...

  7. docker下部署gitlab

    docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全. ...

  8. Docker搭建部署Node项目

    前段时间做了个node全栈项目,服务端技术栈是 nginx + koa + postgresql.其中在centos上搭建环境和部署都挺费周折,部署测试服务器,接着上线的时候又部署生产环境服务器.这中 ...

  9. 私活利器,docker快速部署node.js应用

    http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...

随机推荐

  1. vim 编辑器高级用法

    vim编辑器介绍 如果没有安装vim使用下面方式安装 yum -y install vim vi与vim的不同 两者最大的不同:vim可以高亮显示,vi不可以. vim三种工作模式 普通模式 # 光标 ...

  2. 10.6 ip:网络配置工具

    ip命令是iproute软件包中的一个强大的网络配置工具,用于显示或管理Linux系统的路由.网络设备.策略路由和隧道.   ip [option] [object] [command] ip [选项 ...

  3. STM32自己的封装库

    以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程. 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间.每次建立工程都这么编译,是一个相当浪费时 ...

  4. Navicat Premium 15 linux 安装与激活 ArchLinux 2021

    查看了很多教程花了半小时才弄好可真不容易 参考https://github.com/orginly/navicat-keygen 下载地址 http://www.navicat.com.cn/down ...

  5. TVM量化小结手册

    TVM量化小结手册 文章目录 Offical References TVM quantization roadmap INT8 quantization proposal Quantization S ...

  6. 端到端TVM编译器(上)

    端到端TVM编译器(上) 摘要 将机器学习引入到各种各样的硬件设备中.AI框架依赖于特定于供应商的算子库,针对窄范围的服务器级gpu进行优化.将工作负载部署到新平台,例如手机.嵌入式设备和加速器(例如 ...

  7. ResNet网络的训练和预测

    ResNet网络的训练和预测 简介 Introduction 图像分类与CNN 图像分类 是指将图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法,是计算机视觉中其他任务,比如目标检测 ...

  8. YOLOvi(i=1,2,3,4)系列

    YOLOvi(i=1,2,3,4)系列 YOLOv4论文链接:https://arxiv.org/pdf/2004.10934.pdf YOLOv4源码链接:https://github.com/Al ...

  9. CodeGen按钮循环

    CodeGen按钮循环 按钮循环是一个模板文件构造,它允许您迭代CodeGen拥有的按钮信息集合.              在按钮循环中处理的按钮的定义可以来自两个位置之一. 如果基于UI工具箱输入 ...

  10. 使用adb命令在模拟器安装apk

    1.adb connect 127.0.0.1:7555 连接网易模拟器地址2.adb devices -L 查看有几个连接端口地址3.执行推送配置文件 命令 adb push 文件 路径