搭建PostgreSql数据库服务器
知识点
- 使用Docker镜像搭建PostgreSql数据库服务器
官网
PostgreSql
PostgreSQL: The world's most advanced open source database
版本控制策略
实战演习
# 找到适合您的PostgreSql版本
$ sudo docker pull postgres:9.6.16-alpine
# 启动PostgreSql数据库服务器 - webdb
$ sudo docker run --name webdb -p 5432:5432 -e POSTGRES_USER=dbuser -e POSTGRES_PASSWORD=12345678 -d postgres:9.6.16-alpine
# 数据库容器(服务)查看
$ sudo docker container ls
$ nmap 127.0.0.1
$ nvidia@nvidia-desktop:~$ nmap 127.0.0.1
-bash: nmap: command not found
$ nvidia@nvidia-desktop:~$ sudo apt-get install nmap
$ nvidia@nvidia-desktop:~$ nmap 127.0.0.1
Starting Nmap 7.60 ( https://nmap.org ) at 2023-02-24 13:47 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00052s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
5432/tcp open postgresql
9090/tcp open zeus-admin
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds
$ sudo apt-get install postgresql-client-common
$
# psql连接
$ psql -h localhost -U dbuser
$ nvidia@nvidia-desktop:~$ psql -h localhost -U dbuser
Error: You must install at least one postgresql-client-<version> package
nvidia@nvidia-desktop:~$ sudo psql -h localhost -U dbuser
Error: You must install at least one postgresql-client-<version> package
$ sudo apt -y install postgresql-client
Password for user dbuser:
dbuser=# select * from pg_tables;
dbuser=# \q
# 数据库服务停止
$ sudo docker stop webdb
$ nmap 127.0.0.1
$ sudo docker container ls
$ sudo docker container ls -a
# 数据库服务再开
$ sudo docker start webdb
# 进入数据库实例的bash
$ sudo docker exec -it webdb /bin/bash
bash-5.0# cd /var/lib/postgresql/data
bash-5.0# ls
bash-5.0# cat pg_hba.conf
bash-5.0# cat postgresql.conf
bash-5.0# exit
######################################
# 课题:数据库文件脱离Docker容器永久保存
######################################
# 建立专用的独立使用的卷(Volume)
$ sudo docker volume create --name v_webdb_data
$ sudo docker volume ls
$ sudo docker volume inspect v_webdb_data
# 清理旧的webdb实例
$ sudo docker stop webdb
$ sudo docker container rm webdb
$ sudo docker container ls -a
# 建立新的webdb实例
$ sudo docker run --name webdb -v v_webdb_data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=dbuser -e POSTGRES_PASSWORD=12345678 -d postgres:9.6.16-alpine
# 绑定卷的查看
$ sudo docker inspect webdb
...
"Mounts": [
{
"Type": "volume",
"Name": "v_webdb_data",
"Source": "/var/lib/docker/volumes/v_webdb_data/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
...