首先下载镜像:
docker pull postgres
创建数据目录
mkdir /opt/pg-data
下载完成后运行
docker run -itd -e POSTGRES_USER=y4d -e POSTGRES_PASSWORD=ywfly007 -p 15432:5432 -v /opt/pg-data:/var/lib/postgresql/data --name postgres postgres
上面的命令使用环境变量POSTGRES_USER
和POSTGRES_PASSWORD
来设置PostgreSQL
数据库的用户名和密码。默认情况下,PostgreSQL
数据库运行在5432
端口上。我们在docker run
命令中使用-p 15432:5432
暴露了主机上的15432
端口。
为了备份数据,我们还将/var/lib/postgresql/data
目录安装到postgres
容器的主机的/opt/pg-data
目录中。
此时运行docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0fde6b6f8b2 postgres "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 0.0.0.0:15432->5432/tcp, :::15432->5432/tcp postgres
进入容器
docker exec -it b0fd bash
登录
PGPASSWORD=ywfly007 psql -U y4d
创建数据库pt
并授所有权给用户y4d
:
create database pt owner=y4d;
创建schema
并授所有权给用户y4d
:
create schema if not exists pms authorization y4d;
建表: 略
此时使用\l
可以查看已经创建的数据库信息:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+------------+------------+-------------------
postgres | y4d | UTF8 | en_US.utf8 | en_US.utf8 |
pt | y4d | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | y4d | UTF8 | en_US.utf8 | en_US.utf8 | =c/y4d +
| | | | | y4d=CTc/y4d
template1 | y4d | UTF8 | en_US.utf8 | en_US.utf8 | =c/y4d +
| | | | | y4d=CTc/y4d
y4d | y4d | UTF8 | en_US.utf8 | en_US.utf8 |