Docker学习(8)搭建PostgreSql数据库服务器数据库脱离容器永久保存

搭建PostgreSql数据库服务器

知识点

  • 使用Docker镜像搭建PostgreSql数据库服务器

官网

Docker

PostgreSql

PostgreSQL: The world's most advanced open source database

版本控制策略

PostgreSQL: Versioning Policy

实战演习

# 找到适合您的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": ""
            }
        ],
...


 

猜你喜欢

转载自blog.csdn.net/weixin_46151178/article/details/129200825