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

腾讯云   2023-03-15 09:04:54

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

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

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


(相关资料图)

拉取Postgres镜像并创建PostgreSQL容器

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

$ docker images复制代码
REPOSITORY   TAG           IMAGE ID      CREATED       SIZEpostgres     14-alpine     a762fe0bf572  2 months ago  216MBpostgres     14-alpine3.16 a762fe0bf572  2 months ago  216MBpostgres     14.5-alpine   a762fe0bf572  2 months ago  216MBpg-dump      13            646d500e76f2  8 months ago  234MB

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

$ docker pull postgres:13.013.0: Pulling from library/postgresbb79b6b2107f: 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:8f7c3c9b61d82a4a021da5d9618faf056633e089302a726d619fa467c73609e4Status: Downloaded newer image for postgres:13.0docker.io/library/postgres:13.0

再次查看本地镜像:

$ docker images
REPOSITORY   TAG           IMAGE ID      CREATED       SIZEpostgres     13.0       c96f8b6bc0d9  2 years ago   314MBpostgres     14-alpine     a762fe0bf572  2 months ago  216MBpostgres     14-alpine3.16 a762fe0bf572  2 months ago  216MBpostgres     14.5-alpine   a762fe0bf572  2 months ago  216MBpg-dump      13            646d500e76f2  8 months ago  234MB

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

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

$ docker ps –all 
CONTAINER ID   IMAGE                    COMMAND     CREATED      STATUS      be2b3702b8c7   portainer/agent:2.11.1   "./agent"   2 days ago   Up 2 days   

执行以下命令运行docker pg:

$ docker run -it -d –name postgres_db -e POSTGRES_PASSWORD=postgres -d postgres

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

–name 识别容器的标签

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

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

$ docker ps
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等等)

docker exec -it 67a4705c263c /bin/bash
root@67a4705c263c:/# ps -ef | grep postgres
postgres     1     0  0 Oct30 ?        00:00:02 postgrespostgres    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连接到数据库。

root@67a4705c263c:/# psql -U postgres

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

$ docker exec -it 67a4705c263c psql -U postgres复制代码

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

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

更改Postgres参数需要什么

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

postgres=# alter system set shared_buffers=10 MB;复制代码

重启服务,查看shared_buffers 参数

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

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

$ docker restart 67a4705c263c复制代码

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

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

相关新闻