Docker postgres_2d

1、拉取镜像

docker pull postgres

2、创建本地卷

数据卷可以在容器之间共享和重用, 默认会一直存在,即使容器被删除(docker volume inspect pgdata可查看数据卷的本地位置,验证持久数据目录)

[root@bigdata bigdata]# docker volume create pgdatapgdata[root@bigdata bigdata]# docker volume inspect pgdata[    {        "CreatedAt": "2022-06-27T20:20:12+08:00",        "Driver": "local",        "Labels": {},        "Mountpoint": "/var/lib/docker/volumes/pgdata/_data",        "Name": "pgdata",        "Options": {},        "Scope": "local"    }]

3、启动容器

docker run  \--name duo-postgres \--restart=always \-p 5432:5432 \-d \-e POSTGRES_PASSWORD=123456 \-e ALLOW_IP_RANGE=0.0.0.0/0 \-v /bigdata/postgres/data:/var/lib/postgresql/data \-v /bigdata/postgres/my-postgres.conf:/etc/postgresql/postgresql.conf \postgres

Docker postgres_docker_02

  • run :创建并运行一个容器
  • –name :指定容器名称
  • -e POSTGRES_PASSWORD=123456,设置环境变量,指定数据库的登录口令为123456
  • -p :指定宿主机和 Docker 容器端口映射,冒号前为宿主机端口号,另一个是容器端口号。
  • postgres:指定使用postgres作为镜像
  • - v:映射(本地目录:容器目录)
  • -e ALLOW_IP_RANGE=0.0.0.0/0:允许所有ip访问,不加非本机ip不能访问

4、修改配置

4.1 编辑postgresql.conf文件

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

4.2 编辑pg_hba.conf文件

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

Docker postgres_docker_03

5、进入容器,从新加载pg配置

[root@bigdata data]# docker exec -it 7b2d8a96ef4c /bin/bashroot@7b2d8a96ef4c:/# su postgrespostgres@7b2d8a96ef4c:/$ pg_ctl reloadserver signaled

6、Datagrip连接测试

Docker postgres_docker_04