前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Docker]使用Docker安装实时数仓Postgres

[Docker]使用Docker安装实时数仓Postgres

原创
作者头像
宇宙无敌暴龙战士之心悦大王
修改2023-03-15 11:24:04
1.6K0
修改2023-03-15 11:24:04
举报
文章被收录于专栏:kwaikwai

在本文中,我们将一起学习如何使用docker安装PostgreSql。

我最喜欢使用[docker]的原因就是,我们真的不必太担心构建系统或配置。Docker容器非常轻巧 (消耗更少的资源),非常易于安装和使用。

如果你还是不太了解和熟悉docker,参阅官方文档,在你的笔记本电脑上安装docker,然后按照步骤操作可能会更有帮助。

拉取Postgres镜像并创建PostgreSQL容器

创建Postgres容器的第一件事是要有一个容器镜像。让我们验证我们存储库中的所有镜像,执行以下命令:查看docker中所有镜像。

代码语言:javascript
复制
$ docker images
代码语言:javascript
复制
REPOSITORY   TAG           IMAGE ID      CREATED       SIZE
postgres     14-alpine     a762fe0bf572  2 months ago  216MB
postgres     14-alpine3.16 a762fe0bf572  2 months ago  216MB
postgres     14.5-alpine   a762fe0bf572  2 months ago  216MB
pg-dump      13            646d500e76f2  8 months ago  234MB

让我们访问PostgreSQL docker镜像存储库

代码语言:javascript
复制
$ docker pull postgres:13.0
13.0: Pulling from library/postgres
bb79b6b2107f: Already exists 
e3dc51fa2b56: Pull complete 
f213b6f96d81: Pull complete 
2780ac832fde: Pull complete 
ae5cee1a3f12: Pull complete 
95db3c06319e: Pull complete 
475ca72764d5: Pull complete 
8d602872ecae: Pull complete 
c4fca31f2e3d: Pull complete 
a00c442835e0: Pull complete 
2e2305af3390: Pull complete 
6cff852bb872: Pull complete 
25bb0be11543: Pull complete 
4738c099c4ad: Pull complete 
Digest: sha256:8f7c3c9b61d82a4a021da5d9618faf056633e089302a726d619fa467c73609e4
Status: Downloaded newer image for postgres:13.0
docker.io/library/postgres:13.0

再次查看本地镜像:

代码语言:javascript
复制
$ docker images
代码语言:javascript
复制
REPOSITORY   TAG           IMAGE ID      CREATED       SIZE
postgres     13.0      		 c96f8b6bc0d9  2 years ago   314MB
postgres     14-alpine     a762fe0bf572  2 months ago  216MB
postgres     14-alpine3.16 a762fe0bf572  2 months ago  216MB
postgres     14.5-alpine   a762fe0bf572  2 months ago  216MB
pg-dump      13            646d500e76f2  8 months ago  234MB

接下来,让我们创建第一个Postgres容器。

执行以下命令查看所有的docker容器

代码语言:javascript
复制
$ docker ps –all 
代码语言:javascript
复制
CONTAINER ID   IMAGE                    COMMAND     CREATED      STATUS      
be2b3702b8c7   portainer/agent:2.11.1   "./agent"   2 days ago   Up 2 days   

执行以下命令运行docker pg:

代码语言:javascript
复制
$ docker run -it -d –name postgres_db -e POSTGRES_PASSWORD=postgres -d postgres

注意: 要创建容器,使用此命令 docker run -it -d

–name 识别容器的标签

-e POSTGRES_PASSWORD是创建容器时的强制参数。

接下来,让我们使用docker ps命令查看正在运行的容器

代码语言:javascript
复制
$ docker ps
代码语言:javascript
复制
CONTAINER ID   IMAGE                    COMMAND     							CREATED      				STATUS      
be2b3702b8c7   portainer/agent:2.11.1   "./agent"   							2 days ago   				Up 2 days   
67a4705c263c   postgres:13               "docker-entrypoint.s…"   4 months ago        Up 2 days           0.0.0.0:5432->5432/tcp

如何通过bash连接访问容器

让我们使用以下命令使用bash连接到容器。将会看到有一些Postgres进程在后台运行 (checkpointer、walwriter、stats collector等等)

代码语言:javascript
复制
docker exec -it 67a4705c263c /bin/bash
代码语言:javascript
复制
root@67a4705c263c:/# ps -ef | grep postgres
代码语言:javascript
复制
postgres     1     0  0 Oct30 ?        00:00:02 postgres
postgres    26     1  0 Oct30 ?        00:00:00 postgres: checkpointer  
postgres    27     1  0 Oct30 ?        00:00:01 postgres: background writer  
postgres    28     1  0 Oct30 ?        00:00:01 postgres: walwriter  
postgres    29     1  0 Oct30 ?        00:00:01 postgres: autovacuum launcher  
postgres    30     1  0 Oct30 ?        00:00:03 postgres: stats collector  
postgres    31     1  0 Oct30 ?        00:00:00 postgres: logical replication launcher  
root      3505  3498  0 01:05 pts/0    00:00:00 grep postgres

如何使用psql直接连接到数据库

现在,让我们执行psql连接到数据库。

代码语言:javascript
复制
root@67a4705c263c:/# psql -U postgres

连接到数据库的另一种方法是在连接到Postgres容器本身时使用psql。

代码语言:javascript
复制
$ docker exec -it 67a4705c263c psql -U postgres

让我们使用以下查询命令:

代码语言:javascript
复制
postgres=# select now();
代码语言:javascript
复制
             now
-----------------------------
2022-11-02 01:09:40.608002+00
(1 row)

更改Postgres参数需要什么

接下来,让我们尝试将参数shared_buffers从默认值128MB更改为10mb。由于此参数需要重新启动postgres服务,因此我们必须确保这样做才能实现。

代码语言:javascript
复制
postgres=# alter system set shared_buffers=10 MB;

重启服务,查看shared_buffers 参数

代码语言:javascript
复制
postgres=# show shared_buffers;
代码语言:javascript
复制
shared_buffers
--------------
    128MB
(1 row)

重新启动Postgres容器。如果你想从容器内部重新启动postgres服务,它将崩溃并停止容器。请记住,容器本身就是postgres服务!

代码语言:javascript
复制
$ docker restart 67a4705c263c

让我们链接pg查看刚才修改参数配置的结果

代码语言:javascript
复制
$ docker exec -it 67a4705c263c psql -U postgres
代码语言:javascript
复制
postgres=# show shared_buffers;
代码语言:javascript
复制
shared_buffers
--------------
    10MB
(1 row)

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 拉取Postgres镜像并创建PostgreSQL容器
  • 如何通过bash连接访问容器
  • 如何使用psql直接连接到数据库
  • 更改Postgres参数需要什么
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档