Docker 会自动在 /var/lib/docker/volume/ 路径下为主机上的卷创建一个目录。该卷可以在容器之间共享和重用, 且默认会一直存在。
1
2
3
4
5
|
docker volume list # 列出 Docker 卷
docker volume rm pgdata # 删除 Docker 卷
docker volume create pgdata # 创建 Docker 卷
docker volume inspect pgdata # 检查 Docker 卷
|
1
2
3
4
5
6
7
8
9
|
docker run -it \
--name postgres \
--restart always \
-e TZ='Asia/Shanghai' \
-e POSTGRES_PASSWORD='abc123' \
-e ALLOW_IP_RANGE=0.0.0.0/0 \
-v /home/postgres/data:/var/lib/postgresql \
-p 55435:5432 \
-d postgres
|
名称 |
解释 |
--name |
自定义容器名称 |
--restart always |
设置容器在 docker 重启时自动启动容器 |
-e POSTGRES_PASSWORD |
Postgresql 数据库密码 |
-e ALLOW_IP_RANGE=0.0.0.0/0 |
表示允许所有 IP 访问 |
-e TZ='Asia/Shanghai' |
设置时区 |
-v [path] : [path] |
本地目录映射 (本地目录 : 容器内路径) |
-p 55435:5432 |
端口映射 (主机端口 : 容器端口) |
-d postgres |
镜像名称 |
1
|
docker exec -it postgres bash
|
将当前 root 切换成 postgres
输入用户名/密码执行完后,再根据提示输入
输入密码,登录成功
根据第五步,先切换到 Linux 用户 postgres,并执行如下 psql
1
2
3
4
|
create user test with password 'test'; # 创建数据库新用户
CREATE DATABASE testdb OWNER test; # 创建用户数据库
GRANT ALL PRIVILEGES ON DATABASE testdb TO test; # 将 testdb 数据库的所有权限都赋予 test
\q # 使用命令 \q 退出 psql
|
注意:语句要以分号结尾。密码要用单引号括起来。