拉取镜像
docker search postgres
docker pull postgres
创建本地卷
数据卷可以在容器之间共享和重用, 默认会一直存在,即使容器被删除
# 创建本地卷docker volume create pgdata# 查看数据卷的本地位置,验证持久数据目录docker volume inspect pgdata
创建映射文件
mkdir /root/xxx/postgre/data
启动容器
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角色
# 查看容器 IDdocker ps# 进入容器docker exec -it postgres /bin/bash
su postgres

createuser -p -s -e postgre

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

