天天看點

docker下postgresql安裝

docker下postgresql安裝
資料庫作為項目必不少的一部分,小夥伴們無論在日常開發或者私活中都要接觸,而且oracle,postgresql等資料庫相對更加的複雜與繁瑣,

1.安裝資料庫

1.拉取鏡像

1. docker pull postgres:13.0 //版本号自己掌握
2. 複制代碼      

2.啟動容器

1. docker run --name postgres -e POSTGRES_PASSWORD=password -p 5432:5432 -v /usr/local/postgresql/data:/var/lib/postgresql/data -d postgres:13.0
2. 複制代碼      

參數解釋:

  • 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.檢視容器

1. docker ps 
2. 複制代碼      
docker下postgresql安裝

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.異常

如果抛出以下異常

1. changing ownership of '.': Permission denied或者chmod: changing permissions of '/var/lib/postgresql/data': Permission denied
2. 複制代碼      

需要關閉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建立,否則就會抛出沒有權限的異常