postgres Docker Official Image:https://hub.docker.com/_/postgres
postgres Docker Official Image tag:https://hub.docker.com/_/postgres/tags
su userxx
1.Pull the PostgreSQL Docker Image
docker pull postgres
docker pull postgres:17
2. Create a Docker Volume for Data Persistence
docker volume create postgres_data
or
3.Run the PostgreSQL Docker Container
在宿主机上创建文件夹,其中区分数据和配置。
以普通用户身份创建
mkdir -p /datadocker/postgres1.如果用 sudo mkdir 创建文件夹,该文件夹的归属权会变成 root。这可能导致 Docker 容器内的 postgres 用户(UID 通常是 999)无法在里面写入数据,报错“Permission denied”。
2.
# 以普通用户身份创建
mkdir -p ~/postgres_data/data
3.如果已经用 root 创建,可以改回权限:
sudo chown -R $USER:$USER ~/postgres_data
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD='p@ssword$123!'\
-p 5432:5432 \
-v /datadocker/postgres/data:/var/lib/postgresql/data \
-v /datadocker/postgres/config:/etc/postgresql \
postgres:17-e POSTGRES_PASSWORD: 设置数据库超级用户的密码(必填)。
-v [宿主机路径]:[容器内路径]: 你刚才创建的文件夹映射到容器内存放数据库文件的地方。
-e POSTGRES_PASSWORD=mysecretpassword: Sets the required password for the default postgres user.
-v postgres_data:/var/lib/postgresql/data: Mounts the postgres_data volume you created to the directory where PostgreSQL stores its data inside the container.
Access PostgreSQL with a client
docker exec -it my_postgres psql -U postgresoutput
psql (17.7 (Debian 17.7-3.pgdg13+1))
Type "help" for help.
postgres=# ls -l
Deleting the volume
docker volume rm my_pgdata