docker下postgresql安装_表空间


数据库作为项目必不少的一部分,小伙伴们无论在日常开发或者私活中都要接触,而且oracle,postgresql等数据库相对更加的复杂与繁琐,


1.安装数据库

1.拉取镜像

docker pull postgres:13.0 //版本号自己掌握 复制代码

2.启动容器

docker run --name postgres -e POSTGRES_PASSWORD=password -p 5432:5432 -v /usr/local/postgresql/data:/var/lib/postgresql/data -d postgres:13.0
复制代码

参数解释:


  • run: 创建并运行一个容器;
  • --name postgres: 指定创建的容器的名字;
  • -e POSTGRES_PASSWORD=password: 设置环境变量,指定数据库的登录口令为password;
  • -p 5432:5432: 端口映射将容器的5432端口映射到外部机器的5432端口;
  • -v /usr/local/postgresql/data:/var/lib/postgresql/data 将/usr/local/postgresql/data挂载到容器的/var/lib/postgresql/data文件中,俗话讲这两个文件夹拥有相同数据。
  • -d postgres 指定使用postgres作为镜像。


登录的初始用户:postgres 登录的初始:password


3.查看容器

docker ps  复制代码

docker下postgresql安装_表空间_02

4.创建表空间

当docker操作postgresql新建表空间时,需要进入容器操作 并使用postgres用户创建文件夹

docker exec -it 容器image /bin/bash
su - postgres
mkdir system


psql 数据库用户名称
create tablespace 表空间名 owner 拥有者 location '在容器中的路径名';
例:create tablespace systme owner admin location '/var/lib/postgresql/data/system';
建议在每建立一个表空间下都在/var/lib/postgresql/data下新一个文件夹(本处新建了system),因为新建时会在路径下新建一个PG_13_日期的文件夹,有可能重复
复制代码

5.异常

如果抛出以下异常

changing ownership of '.': Permission denied或者chmod: changing permissions of '/var/lib/postgresql/data': Permission denied
复制代码

需要关闭SELinux

getenforce #查看SELinux状态 permissive关闭状态 enforcing开启状态
setenforce 0 #临时关闭
setenforce 1 #临时开启

//永久关闭
修改 /etc/selinux/config
SELINUX=enforcing改为SELINUX=permissive

切记不要改成disabled 会出现异常 Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2
复制代码


当想要新建数据库中需要的文件夹时,一定要是进入容器,并且使用固定用户postgres创建,否则就会抛出没有权限的异常