拉取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=#
相关推荐
原来是猿2 小时前
MySQL【用户管理】
数据库·mysql
2501_945423542 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
2401_846341652 小时前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
2401_831824962 小时前
编写一个Python脚本自动下载壁纸
jvm·数据库·python
2401_857918293 小时前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
IvorySQL3 小时前
PostgreSQL 19 重磅新语法终于补齐这个缺口
数据库·postgresql·开源
IvorySQL3 小时前
PostgreSQL 技术日报 (3月23日)|使用 rdtsc 减少 EXPLAIN ANALYZE 的计时开销
数据库·postgresql·开源
hansaes3 小时前
第一章:容器到底是什么
docker
yhole3 小时前
SQL中的REGEXP正则表达式使用指南
数据库·sql·正则表达式
IvorySQL3 小时前
PostgreSQL 技术日报 (3月21日)|这些机制,可能并非 “ 理所当然 ”
数据库·postgresql·开源