#查询镜像 docker search postgres
#默认拉取最新版本 docker pull postgres
#拉取指定版本 docker pull postgres:12.5
#查看拉取的镜像
[root@centos1 overlay2]# docker images |grep postgres
postgres 12.5 044aa8666500 8 days ago 314MB
路径:/var/lib/docker
[root@centos1 overlay2]# cd /var/lib/docker/image/overlay2
[root@centos1 overlay2]# pwd
/var/lib/docker/image/overlay2
[root@centos1 overlay2]# cat repositories.json |jq .
{
"Repositories": {
"hello-world": {
"hello-world:latest": "sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b",
"hello-world@sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec": "sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b"
},
"postgres": {
"postgres:12.5": "sha256:044aa866650085813087ea84d5d27f7f92370dcf52812f0d3cc559a4dadc2a4d",
"postgres@sha256:87eb6772b300b260f080eceb7658c39a37a6bd1e302f459305d2d4b5df3523b0": "sha256:044aa866650085813087ea84d5d27f7f92370dcf52812f0d3cc559a4dadc2a4d"
}
}
}
#创建本地目录用于挂载 mkdir /root/bwz/pgdata -p
#创建一个名字为postgres1的容器
[root@centos1 ~]# docker run --name postgres1 -e POSTGRES_PASSWORD=123456 -e TZ=PRC -p 5432:5432 -v /root/bwz/pgdata:/var/lib/postgresql/data -d postgres:12.5
6f8364ca217cffb7e9f257bd0a4d7215fe68a877ecf7f218fd153563829dac72
[root@centos1 ~]#
--name postgres1 #给容器起个名字
-p 5432:5432 #端口映射 宿主机:容器
-e POSTGRES_PASSWORD=123456 #设置密码(默认用户名postgres)
-e TZ=PRC #时区,中国,如果在启动容器时不设置时区,默认为UTC,使用now()设置默认值的时候将有时间差。
-v /docker/postgresql/data:/var/lib/postgresql/data #映射数据目录,将容器内路径/docker/postgresql/data指向宿主机路径/var/lib/postgresql/data
-d #后台运行
#查看正在运行容器 docker ps
#查看历史运行容器 docker ps -a
#运行出错,查看错误信息 docker logs postgres1
--进入容器postgres1
docker exec -it postgres1 /bin/bash
#退出容器 exit
#关闭容器 docker stop postgres1
#重启容器 docker restart postgres1
#启动容器 docker start postgres1
#删除容器 docker rm postgres1
###以下命令进入容器后执行
root@ad10d614eef5:/# whereis psql
psql: /usr/bin/psql /usr/lib/postgresql/12/bin/psql /usr/share/man/man1/psql.1.gz
--用缺省用户postgres连接数据库
root@ad10d614eef5:/# psql -U postgres
psql (12.5 (Debian 12.5-1.pgdg100+1))
Type "help" for help.
postgres=#
--创建用户,1. 要以英文分号结尾;2.密码需要单引号包裹;3.用户名首字母不能大写
postgres=# create user bwz with password '123456';
CREATE ROLE
postgres=#
--赋予用户超级权限
postgres=# alter user bwz superuser ;
ALTER ROLE
postgres=#
--查看所有用户
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
bwz | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres=#
--切换用户
postgres=# \c - bwz
You are now connected to database "postgres" as user "bwz".
postgres=>
--查看当前连接的用户名
postgres=> select user;
user
------
bwz
(1 row)
postgres=>
--创建数据库db1,db2
postgres=# CREATE DATABASE DB1;
CREATE DATABASE
postgres=# CREATE DATABASE DB2;
CREATE DATABASE
postgres=#
--查看数据库
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
db1 | bwz | UTF8 | en_US.utf8 | en_US.utf8 |
db2 | bwz | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
postgres=#
--切换数据库
postgres=# \c db1
You are now connected to database "db1" as user "bwz".
--在db1中建表
db1=# create table t1(a int);
CREATE TABLE
db1=# insert into t1 values (123);
INSERT 0 1
db1=# select * from t1;
a
-----
123
(1 row)
db1=#
--退出容器
db1=# exit
--备份db1的数据,还原到db2
root@ad10d614eef5:~# cd /var/lib/postgresql/data/
root@ad10d614eef5:/var/lib/postgresql/data#mkdir bwz
root@ad10d614eef5:/var/lib/postgresql/data# cd bwz
root@ad10d614eef5:/var/lib/postgresql/data/bwz# pg_dump -Ubwz -ddb1 -Fc -f dump.dmp
root@ad10d614eef5:/var/lib/postgresql/data/bwz# ll
total 4
-rw-r--r--. 1 root root 1235 Dec 26 17:10 dump.dmp
root@ad10d614eef5:/var/lib/postgresql/data/bwz# pg_restore -Ubwz -ddb2 -Fc dump.dmp
root@ad10d614eef5:/var/lib/postgresql/data/bwz#
--查看还原结果
root@ad10d614eef5:/var/lib/postgresql/data/bwz# psql -Ubwz -d db2
psql (12.5 (Debian 12.5-1.pgdg100+1))
Type "help" for help.
db2-# \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
public | t1 | table | bwz
(1 row)
db2=# select * from t1;
a
-----
123
(1 row)
db2=#