拉取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=#
相关推荐
今天AI了吗8 小时前
MCP 协议打通 AI 与国产数据库,SQL 调优全流程一站式闭环
数据库·人工智能·sql
灯澜忆梦8 小时前
【MySQL11】进阶篇 | 索引_#3使用规则
数据库·sql·mysql·性能优化
名字还没想好☜8 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
Zhu7589 小时前
在docker环境部署frp
运维·docker·容器
wWYy.9 小时前
Mysql:有哪些锁?
数据库·mysql
李可以量化9 小时前
Tornado 从了解到精通(一)下:异步与非阻塞 IO 核心原理
java·数据库·tornado
VALENIAN瓦伦尼安教学设备10 小时前
ASHOOTER激光对中仪如何通过颜色确定调整是否合适
数据库·嵌入式硬件·算法
Wang's Blog10 小时前
AI Agent白手起家58: 项目可观测性——用 LangSmith 实现全链路追踪
数据库·人工智能
SL_staff10 小时前
JVS数字底座实践:如何复用企业文档能力快速构建知识类应用
java·数据库·程序员
qq_1851986911 小时前
SpingBoot3入门学习-Web开发-三
java·数据库·学习