拉取-postgresql-镜像

docker pull postgres 

创建本地卷

Docker 会自动在 /var/lib/docker/volume/ 路径下为主机上的卷创建一个目录。该卷可以在容器之间共享和重用, 且默认会一直存在。

docker volume list            # 列出 Docker 卷 docker volume rm pgdata       # 删除 Docker 卷   
docker volume create pgdata   # 创建 Docker 卷 docker volume inspect pgdata  # 检查 Docker 卷 

构建镜像容器)

docker run -it \  --name postgres \  --restart always \  -e TZ='Asia/Shanghai' \  -e POSTGRES_PASSWORD='abc123' \  -e ALLOW_IP_RANGE=0.0.0.0/0 \  -v /home/postgres/data:/var/lib/postgresql \  -p 55435:5432 \  -d postgres 
名称解释
—name自定义容器名称
—restart always设置容器在 docker 重启时自动启动容器
-e POSTGRES_PASSWORDPostgresql 数据库密码
-e ALLOW_IP_RANGE=0.0.0.0/0表示允许所有 IP 访问
-e TZ=‘Asia/Shanghai’设置时区
-v [path] : [path]本地目录映射 (本地目录 : 容器内路径)
-p 554 35:5432端口映射 (主机端口 : 容器端口)
-d postgres镜像名称

进入-postgres-容器

docker exec -it postgres bash 

切换当前用户再登录数据库

将当前 root 切换成 postgres

su postgres 

输入用户名/密码执行完后,再根据提示输入

psql -U postgres -W 

输入密码,登录成功

创建新用户

根据第五步,先切换到 Linux 用户 postgres,并执行如下 psql

create user test with password 'test';            # 创建数据库新用户 CREATE DATABASE testdb OWNER test;                # 创建用户数据库 GRANT ALL PRIVILEGES ON DATABASE testdb TO test;  # 将 testdb 数据库的所有权限都赋予 test \q                                                # 使用命令 \q 退出 psql 

注意:语句要以分号结尾。密码要用单引号括起来。