拉取postgresql 18.0 docker镜像并运行容器

postgresql 18.0今天发布了,在Linux上用容器来体验比较方便。

1.拉取镜像

bash 复制代码
docker pull docker.1ms.run/postgres:18
Trying to pull docker.1ms.run/postgres:18...
Getting image source signatures
Copying blob 1d5017cf452d done
Copying blob 8551209c5a1e done
Copying blob ce1261c6d567 done
Copying blob 180db792316f done
Copying blob 5773151508cd done
Copying blob 28b206cbbc14 done
Copying blob e1b18b5359f0 done
Copying blob 8d0a13cb166d done
Copying blob 30b4b10fcf1d done
Copying blob 168b3ade331e done
Copying blob 6458b7f41c65 done
Copying blob 0a51ed68fa52 done
Copying blob ef07360e404d done
Copying blob 8a9c24e23f88 done
Copying config b5a5f7a2b9 done
Writing manifest to image destination
Storing signatures
b5a5f7a2b9a2c002c1827ae45e0b136b393c74399d38272322e5da69feb8766d

2.运行容器

用以往运行其他容器的方法来运行postgresql容器报错, 查看错误日志并把错误容器删除

bash 复制代码
root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker run -it -d -v /mnt/c/d:/par --net=host --name pg18 docker.1ms.run/postgres:18
e1b81df353dbf810a75ba76b99a7486aec07eab3021368605b01c6e54b2ef6ff
root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker exec -it pg18 bash
Error: can only create exec sessions on running containers: container state improper
root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker logs --tail 10 pg18
Error: Database is uninitialized and superuser password is not specified.
       You must specify POSTGRES_PASSWORD to a non-empty value for the
       superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".

       You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
       connections without a password. This is *not* recommended.

       See PostgreSQL documentation about "trust":
       https://www.postgresql.org/docs/current/auth-trust.html
root@DESKTOP-59T6U68:/mnt/c/Users/lt# docker container rm pg18
e1b81df353dbf810a75ba76b99a7486aec07eab3021368605b01c6e54b2ef6ff

网上看来的命令行,自己增加一些选项,还是报错

bash 复制代码
docker run -d \
--name pg18 \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=testdb \
-v /mnt/c/d:/par \
-v ~/postgresql/data:/var/lib/postgresql/data \
 --net=host \
docker.1ms.run/postgres:18
Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use
Error: statfs /root/postgresql/data: no such file or directory

先建立-v选项中指定的宿主机目录,并将--net=host选项去掉,可以了

bash 复制代码
mkdir -p /root/postgresql/data
docker run -d \
--name pg18 \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=testdb \
-v /mnt/c/d:/par \
-v ~/postgresql/data:/var/lib/postgresql/data \
docker.1ms.run/postgres:18
fc33d555159907bc8a922bd3cd377dd4882ca8a3faf976785e9cde2ebe37c7e3

docker exec -it pg18 bash
root@fc33d5551599:/# psql
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  role "root" does not exist
root@fc33d5551599:/# su - postgres
postgres@fc33d5551599:~$ psql
psql (18.0 (Debian 18.0-1.pgdg13+3))
Type "help" for help.

postgres=#

也可以在宿主机上用psql登录容器中的数据库, 注意要指定-h选项

bash 复制代码
psql -U postgres -d testdb
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?

psql -U postgres -d testdb -h localhost
Password for user postgres:
psql (14.19 (Ubuntu 14.19-0ubuntu0.22.04.1), server 18.0 (Debian 18.0-1.pgdg13+3))
WARNING: psql major version 14, server major version 18.
         Some psql features might not work.
Type "help" for help.
testdb=#
相关推荐
山沐与山12 小时前
【数据库】PostgreSQL架构与索引深度剖析
数据库·postgresql·架构
不穿格子的程序员12 小时前
Redis篇6——Redis深度剖析:从单机到集群,Redis高可用进化史
数据库·redis·集群·主从·高可用·哨兵
TSAI12 小时前
Docker Swarm 集群部署 Eureka 服务注册中心:高可用微服务架构的基石
spring cloud·docker
不惑_12 小时前
Windows 安装 Docker 和 Docker Compose 完整教程
windows·docker·容器
阿坤带你走近大数据12 小时前
什么是元数据管理?(附具体实施方案供参考)
数据库·金融
xiliuhu12 小时前
PgSQL高级用法
postgresql
俊男无期12 小时前
超效率工作法
java·前端·数据库
2301_8234380212 小时前
【无标题】解析《采用非对称自玩实现强健多机器人群集的深度强化学习方法》
数据库·人工智能·算法
中国胖子风清扬13 小时前
SpringAI和 Langchain4j等 AI 框架之间的差异和开发经验
java·数据库·人工智能·spring boot·spring cloud·ai·langchain
Elastic 中国社区官方博客13 小时前
Elasticsearch:你是说,用于混合搜索(hybrid search)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索