前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >制作 PG15 docker 学习镜像

制作 PG15 docker 学习镜像

原创
作者头像
保持热爱奔赴山海
修改2024-01-11 10:53:55
1830
修改2024-01-11 10:53:55
举报
文章被收录于专栏:饮水机管理员饮水机管理员

如果为了模拟多实例PG环境,有不想开多个虚拟机,也不想在单机多端口运行的话,docker是一个不错的选择。

这里简单介绍下自定义的pg docker容器的制作和使用用法。

1 制作Dockerfile

代码语言:shell
复制
mkdir /root/pg_docker/
cd /root/pg_docker/

vim Dockerfile  内容如下
FROM centos:7
RUN yum install -y epel-release maven wget iproute telnet vim \
&& yum clean all \
&& yum install -y  https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm \
&& yum install -y postgresql15-server postgresql15-contrib

2 打包

代码语言:shell
复制
$ docker build .          
$ docker images | head -3
$ docker tag pg15_sb 52037b76ba71 (这里的值,是根据上面docker images看到的none的镜像的id)

3 宿主机上创建持久化目录

代码语言:shell
复制
cd  /usr/local/software/
mkdir pg15_lab
cd pg15_lab
mkdir primary_data standby1_data
chmod 700 primary_data standby1_data

4 创建容器网络

代码语言:shell
复制
docker network create --subnet=192.168.100.0/24 pg_network

5 启动pg主节点

代码语言:shell
复制
docker run -d -it --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name primary --net pg_network --ip 192.168.100.2 -v ./primary_data:/var/lib/pgsql/15/data pg15_sb:latest

注意: 我这里没有把端口暴露出来,如果需要暴露端口,使用-p参数即可

6 登录进pg主节点进行初始化操作

代码语言:shell
复制
docker exec -ti primary  bash
cd /var/lib/pgsql/15/
chown postgres.postgres data/ -R
chmod 700 data/
su - postgres -c "/usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data/"


然后,改下认证策略(可选),加个复制用的账号
(我这里测试用,直接用dts给了super权限,日常各种操作都用这个账号进行)
postgres=# alter system set password_encryption='md5';
postgres=# select pg_reload_conf();
postgres=# create user dts with password 'dts';
postgres=# alter user dts superuser;
postgres=# alter user dts replication;


改下pg_hba.conf 加一行
host replication dts 192.168.100.0/24 md5


然后,重载下pg
postgres=# select pg_reload_conf();

7 启动备库容器

代码语言:shell
复制
docker run -d -it --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name standby1 --net pg_network --ip 192.168.100.3 -v ./standby1_data:/var/lib/pgsql/15/data pg15_sb:latest

8 在备库上配置与主库的同步

代码语言:shell
复制
docker exec -ti standby1  bash
cd /var/lib/pgsql/15/
chown postgres.postgres data/ -R
chmod 700 data/
su - postgres
cd  /var/lib/pgsql/15/data/

pg_basebackup -h192.168.100.2 --write-recovery-conf --checkpoint=fast --progress  --port=5432 --username=dts --password  --format=p -D ./

9 启动备库进程

代码语言:shell
复制
/usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档