拉取镜像

  1. docker search postgres
  1. docker pull postgres

创建本地卷

数据卷可以在容器之间共享和重用, 默认会一直存在,即使容器被删除

  1. # 创建本地卷
  2. docker volume create pgdata
  3. # 查看数据卷的本地位置,验证持久数据目录
  4. docker volume inspect pgdata

image.png

创建映射文件

  1. mkdir /root/xxx/postgre/data

启动容器

  1. docker run --name postgres -e POSTGRES_PASSWORD=postgres@123 -p 5432:5432 -v pgdata:/root/xxx/postgre/data -d postgres

参数解释docker run #启动容器
—name postgres #命名
-e POSTGRES_PASSWORD=postgres@123 #密码
-p 5432:5432 #端口(前为宿主机端口号,后为容器端口号)
-v pgdata:/root/xxx/postgre/data #将创建的卷pgdata(docker volume create pgdata)挂载到容器的/root/xxx/postgre/data目录
-d postgres #指定postgre版本作为镜像

创建Postgre角色

  1. # 查看容器 ID
  2. docker ps
  3. # 进入容器
  4. docker exec -it postgres /bin/bash
  1. su postgres

image.png

  1. createuser -p -s -e postgre

image.png

创建数据库

  1. psql
  1. create database xxx_bim owner=postgre;
  1. \l

image.png

遇到的问题

问题描述

  1. 不支援 10 验证类型。请核对您已经组态 pg_hba.conf 文件包含客户端的IP位址或网路区段,以及驱动程序所支援的验证架构模式已被支援。
  2. no pg_hba.conf entry for host “x.x.x.x”, user “postgres”, database “xxx”, no encryption 可能原因
  3. pg配置pg_hba.conf修改过,加密方式=由默认换成SHA-256,导致客户端驱动包版本太低,连接异常
  4. pg_hba.conf被改废了 解决方案
  5. docker exec -it 容器id /bin/bash,进入到docker postgres的容器内
  6. cd /var/lib/postgresql/data,进入到pg_hba.conf所在目录
  7. vim pg_hba.conf , 编辑pg_hba.conf文件,修改内容如下截图
  8. 退出容器,重启postgres,等一会,再测试

image.png